List<String> ls1=new ArrayList<String>();
ls1.add("1");
ls1.add("2");
ls1.add("3");
ls1.add("4");
for(String l1:ls1)
{
if(l1.equals("3"))
ls1.remove(l1);
}
}
这么写是错误的。居然还能出结果
1
2
4
改成
for(String l1:ls1)
{
if(l1.equals("2"))
{
ls1.remove(l1);
System.out.println("**");
}
}
就报错了,不晓得为什么,之前的错误写法可以运行。
Exception in thread "main" java.util.ConcurrentModificationException
at java.util.AbstractList$Itr.checkForComodification(Unknown Source)
at java.util.AbstractList$Itr.next(Unknown Source)
at Test6.main(Test6.java:14)
反正不用这种写法就可以了,改正的方法很多,这里有有种也许不是很好的方法,但是是正确的。
for(int i=0;i<ls1.size();i++)
{
if(ls1.get(i).equals("4")){
ls1.remove(i);
i=i-1;
}
}
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
import java.util.ArrayList;
import java.util.List;
public class Test7 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
List<String> temp1=new ArrayList<String>();
List<String> temp2=new ArrayList<String>();
List<String> set = new ArrayList<String>();
set.add("1");
set.add("2");
set.add("3");
temp1.addAll(set);
temp2=set;
for(int i=0;i<temp1.size();i++)
{
System.out.println(temp1.get(i));
}
System.out.println("_______________");
for(int i=0;i<temp2.size();i++)
{
System.out.println(temp2.get(i));
}
}
}
两种方法都是正确的,结果一样
1
2
3
_______________
1
2
3