下面的代码稍微有点长,主要是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:可以从下面的代码中看到,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 + " ");
}
}
}
Iterator
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 + " ");
}
}
}