Java中的sublist()方法返回一個原始列表的子列表視圖。當對原始列表進行結構性修改時會拋出ConcurrentModificationException異常。
要避免并發修改異常,可以采取以下措施:
List<String> originalList = new ArrayList<>();
originalList.add("A");
originalList.add("B");
originalList.add("C");
List<String> subList = originalList.subList(0, 2);
Iterator<String> iterator = subList.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
避免在子列表中進行結構性修改:盡量避免在子列表中進行添加、刪除等結構性修改操作,如果需要修改子列表,最好進行復制操作。
使用線程安全的集合類:如果在多線程環境中需要對子列表進行修改,可以考慮使用線程安全的集合類,如CopyOnWriteArrayList。
List<String> originalList = new CopyOnWriteArrayList<>();
originalList.add("A");
originalList.add("B");
originalList.add("C");
List<String> subList = originalList.subList(0, 2);
subList.add("D"); // 不會拋出并發修改異常
通過以上方法可以避免并發修改異常,確保程序的穩定性和可靠性。