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"); // 不会抛出并发修改异常
通过以上方法可以避免并发修改异常,确保程序的稳定性和可靠性。