一.如何正确删除?
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循環周遊删除
運作後結果:
删除元素後繼續循環會報錯誤資訊java.util.ConcurrentModificationException,因為元素在使用的時候發生了并發的修改,導緻異常抛出。