import java.util.*;
/**
 * 20位的StringList 去除10到15位 
 */
public class StringListTest{
    public static void main(String[] args){       
        List<Integer> list = new ArrayList<Integer>();
        for(int i=1;i<=20;i++){
            list.add(i);
        }       
            int fromIndex = 9;
            int toIndex = 14;
            List<Integer> subList = list.subList(fromIndex, toIndex);
            list.removeAll(subList);       
            System.out.println(subList);
  }    
}
Exception in thread "main" java.util.ConcurrentModificationException
at java.util.SubList.checkForComodification(AbstractList.java:752)
at java.util.SubList.listIterator(AbstractList.java:682)
at java.util.AbstractList.listIterator(AbstractList.java:284)
at java.util.SubList.iterator(AbstractList.java:678)
at java.util.AbstractCollection.contains(AbstractCollection.java:82)
at java.util.AbstractCollection.removeAll(AbstractCollection.java:336)
at com.Tongfu.StringListTest.main(StringListTest.java:64)爆了这么多错就是用sublist提取10~15的数字 然后removeAll ArrayList里就剩下了1-9 16-20的数字了

解决方案 »

  1.   


    List<Integer> subList = list.subList(0, 9);
    subList.addAll(list.subList(15, 20));
      

  2.   

    当你在迭代一个list的时候,不能在迭代过程中改变当前的索引。
    removeAll实际上也是循环删除处在相应索引位置上的元素。
      

  3.   

    List<Integer> list = new ArrayList<Integer>();
    for (int i = 1; i <= 20; i++) {
    list.add(i);
    }
    int fromIndex = 9;
    int toIndex = 14;
    List<Integer> subList = new ArrayList<Integer>(list.subList(fromIndex,
    toIndex));
    list.removeAll(subList);
    System.out.println(list);
      

  4.   


    行了! 多谢各位大侠!!
     new ArrayList那里错了!
      

  5.   

    List<Integer> subList = list.subList(fromIndex, toIndex);List<Integer> subList 这个没有初始化吧