併發修改異常處理
問題:
迭代時遇到並發修改異常一個列表,即使似乎沒有並發修改
實作:
提供的程式碼同時建立一個列表和一個列表迭代器。然後,它在迭代列表時將元素添加到列表中,從而導致異常。
import java.util.*; public class SomeClass { public static void main(String[] args) { List<String> s = new ArrayList<>(); ListIterator<String> it = s.listIterator(); for (String a : args) s.add(a); if (it.hasNext()) String item = it.next(); System.out.println(s); } }
解決方案:
要避免該異常,請修改程式碼如下:
import java.util.*; public class SomeClass { public static void main(String[] args) { List<String> s = new ArrayList<>(); for(String a : args) s.add(a); ListIterator<String> it = s.listIterator(); if(it.hasNext()) { String item = it.next(); } System.out.println(s); } }
在此修改後的程式碼中,列表迭代器是在所有元素添加到列表後創建的。這確保了列表在迭代器的建立和使用之間不會被修改。
以上是迭代和修改列表時如何避免ConcurrentModificationException?的詳細內容。更多資訊請關注PHP中文網其他相關文章!