下面的代码稍微有点长,主要是4段复制的for循环,问题很简单。
问题1:可以从下面的代码中看到,list2是list的一个片段。但是为什么对list或list2进行添加可以,remove()则会抛出异常呢?

import java.util.*;public class Test2 { public static void main(String[] args){
List<String> list = new ArrayList<String>();
Collections.addAll(list, "a","b","c","d","e");
List<String> list2 = new ArrayList<String>();
list2 = list.subList(0, 3);   //new ArrayList(list.subList(0, 3));郁闷如有想独立生成个list2就必须外面再套一个ArrayList。
for(String s: list2){
System.out.print(s + " ");
}

System.out.println();

for(String s: list){
System.out.print(s + " ");
}

System.out.println();

list.set(0,"Z");
list2.add(1,"C");
//list2.remove(0);
//list.remove(0);

for(String s: list2){
System.out.print(s + " ");
}

        System.out.println();

for(String s: list){
System.out.print(s + " ");
}
}
}

解决方案 »

  1.   

    for(String s: list2){ 不允许里面执行remove操作,你可以改成
    Iterator 
      

  2.   

    发了这么多帖子,难得出错,忘记把代码标记出来。import java.util.*;public class Test2 { public static void main(String[] args){
    List<String> list = new ArrayList<String>();
    Collections.addAll(list, "a","b","c","d","e");
    List<String> list2 = new ArrayList<String>();
    list2 = list.subList(0, 3);  //new ArrayList(list.subList(0, 3));郁闷如有想独立生成个list2就必须外面再套一个ArrayList。 
    for(String s: list2){
    System.out.print(s + " ");
    }

    System.out.println();

    for(String s: list){
    System.out.print(s + " ");
    }

    System.out.println();

    list.set(0,"Z");
    list2.add(1,"C");
    list2.remove(0);
    list.remove(0);

    for(String s: list2){
    System.out.print(s + " ");
    }

            System.out.println();

    for(String s: list){
    System.out.print(s + " ");
    }
    }
    }