遇到的问题以及解决方式
1.for循环list集合时删除集合的元素
import java.util.ArrayList;
import java.util.List;
public class Test6 {
public static void main(String[] args) {
List<String> list=new ArrayList<String>();
list.add("asdf");
list.add("bbb");
list.add("aaa");
list.add("acd");
list.add("da");
list.add("bb");
list.add("yyy");
for (int i = 0; i < list.size(); i++) {
if (i <= 4) {
list.remove(i);
}
}
for (String a:list) {
System.out.println(a);
}
}
}
bbb
acd
bb
import java.util.ArrayList;
import java.util.List;
public class Test6 {
public static void main(String[] args) {
List<String> list=new ArrayList<String>();
list.add("asdf");
list.add("bbb");
list.add("aaa");
list.add("acd");
list.add("da");
list.add("bb");
list.add("yyy");
int sign = 0;
for(int i=0;i<list.size();i++){
list.remove(i);
i--;
sign++;
if (sign == 5){
break;
}
}
for (String a:list) {
System.out.println(a);
}
}
}
bb
yyy
总结:
其中最根本的原因就是list是一个动态的集合,当你在一次循环中删除一个元素的时候,为了保证集合的正确性,集合的长度会自动减一,你删除的元素的后面的元素都要向前面移动一个位置。所以就有了那句:“for循环只能用来遍历集合,不可以在遍历的同时进行修改和删除 ”。使用迭代器做这种操作是没有问题的。