JAVA中使用list.subList()的注意事项

java.util.List中的subList方法,是返回list的一部分的视图。

如果做了非结构性修改,双方互相影响。

public static void main(String[] args){
        List<Integer> list = new ArrayList<Integer>();
        list.add(2);
        list.add(1);
        list.add(5);
        list.add(4);
        List<Integer> subList = list.subList(0, 2);
        subList.add(11);
        list.add(3);
        System.out.println(list.size());
        System.out.println(subList.size());
}

 执行上面的代码,就会报错;

6
Exception in thread "main" java.util.ConcurrentModificationException
	at java.util.SubList.checkForComodification(Unknown Source)
	at java.util.SubList.size(Unknown Source)
	at com.sitechasia.ebiz.news.web.NewsCategoryAction.main(NewsCategoryAction.java:228)

 将list.add(3);的操作注释,即可正常运行;但是需要注意的是:对subList操作的同时【subList.add(11);】,list的size也增加了1;

5
3
 

 

 另外,删除list的某一段值,可以这样;

list.subList(0, 2).clear();

猜你喜欢

转载自chenjie1121.iteye.com/blog/2218839