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();