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