天天看點

list删除_java循環删除ArrayList中的元素和隐藏的坑

一.如何正确删除?

1.JDK 1.8的方法引用方式

運作後結果:

2.JDK 1.8的lambda表達式方式

運作後結果:

3.根據下标正序循環删除(删除後下标要減1,不然要踩坑啊!)

運作後結果:

4.根據下标倒序删除

運作後結果:

5.疊代周遊删除

運作後結果:

二.容易踩的坑

1.for循環正序周遊删除

運作後結果:

結果導緻可能有一個元素沒有被删除到

原因:删除某個元素後,list的大小發生了變化,你的索引也在變化,會導緻你在周遊的時候漏掉某些元素。

例如原本你的list大小為4,你删除第1個元素後,你的list大小變為3,list中的元素的下标也會往前移一位(下标減1),而繼續根據索引通路第2個元素時,實際通路的是最初的第3個元素。是以,這種方式可能會漏掉處理一些元素。

2.強制for循環周遊删除

運作後結果:

list删除_java循環删除ArrayList中的元素和隐藏的坑

删除元素後繼續循環會報錯誤資訊java.util.ConcurrentModificationException,因為元素在使用的時候發生了并發的修改,導緻異常抛出。