读书人

List循环输出时剔除元素

发布时间: 2012-07-18 12:05:41 作者: rapoo

List循环输出时删除元素

List<String> lists = new ArrayList<String>();lists.add("ad");lists.add("dv");lists.add("dvs");lists.add("adf");for(int i=0;i<lists.size();i++)        {String s=lists.get(i);if(s.equals("ad"))        {lists.remove(s);        }System.out.println(s);        }

结果
dvs
adf

因为你在lists.remove(s);的时候,ad被删除了,dv放在0的位置,而你for循环的i的值等于1了,打印的是lists(1),这个时候lists(1)值是dvs

解决:
1.可以这样:
for(int i=0;i<lists.size();i++)
{
String s=lists.get(i);
if(!s.equals("ad"))
{
System.out.println(s);
}
}

结果是
dv
dvs
adf
2.
for(int i=0;i<lists.size();i++)
{
String s=lists.get(i);
if(s.equals("ad"))
{
lists.remove(s);
i=i-1;
continue;
}
System.out.println(s);
}
结果是
dv
dvs
adf

读书人网 >软件架构设计

热点推荐