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

你可能感兴趣的:(list)