1. 程式人生 > >在遍歷java集合時不能進行增加和刪除操作(附上集合操作的注意事項)

在遍歷java集合時不能進行增加和刪除操作(附上集合操作的注意事項)

在使用List集合(或者其他普通的集合)進行迭代(或者普通的for迴圈時),並不能進行增加和刪除操作。

要解決這個問題可以從內部程式碼找到原因:

這是因為在程式碼中,hasNext()判斷的條件是:cursor!=size,而size是動態變化的。如果原來size是2,初始cursor是0,刪去了第一個元素後,size就是1,而cursor在訪問下一個元素時,cursor+1,為1,故這樣就跳過了原來的第二個元素。

下面劃重點,如果要在遍歷java集合的時候進行這些操作怎麼辦:

1.可以使用iterator自帶的remove()方法。

2.如果是在多執行緒的環境下,可以使用concurrentHashMap來代替hashMap,用

CopyOnWriteArrayList來代替list。這些均是執行緒安全的java集合。

另外,附上集合的一些使用注意點:

一個例項的迭代器僅僅能使用一次。即

Iterator<user> userIterator = userList.iterator();

userIterator.next()只能在一個地方使用。因為被迭代完畢後,這裡面就沒有東西可以迭代了。

如果還需要使用迭代器獲得內容,只能重新再獲得一個了。Iterator<user> userIterator = userList.iterator();