-
簡介 (Introduction):
-
背景
在使用線程中添加list的元素時,使用add或remove就會產生異常. -
分析
該list每當刪除/添加一個元素時,集合的size方法的值都會減小1,這將直接導致集合中元素的索引重新排序,進一步說,就是剩余所有元素的索引值都減一,而for循環語句的局部變量i扔然在遞減,這將導致刪除/添加操作發生跳躍,從而都是刪除或增加的問題. -
快速上手(Getting Started)
方法一:
list轉化為iterator1 Iterator<String> iterator = stringList.iterator();
測試:
1 String[] strings = {"A","B","C","D"}; 2 3 List<String> stringList = new ArrayList<>(); 4 5 Iterator<String> iterator = stringList.iterator(); 6 7 8 while (iterator.hasNext()) { 9 10 String next = iterator.next(); 11 12 if(next.equals(strings[0])){ 13 iterator.remove(); 14 } 15 16 }
方法二:
逆向for循環1 2 List<String> stringList = new ArrayList<>(); 3 4 for (int i = stringList.size() - 1; i > -1; i--) { 5 6 stringList.add("E"); 7 }
-
-
環境設置 (Prerequisite):
- 環境
JDK1.8 - 配置
IDEA 2019 -
存在問題
暫無
- 環境
-
進階篇 (Advanced):
研究中 ......