循环删除List中的元素的问题-两种方式(不一样的结果)

来源:互联网 发布:mac excel快捷键大全 编辑:程序博客网 时间:2024/05/20 22:29
public void test(List<String> texts){        if (texts != null && texts.size() > 0) {        List<File> delFiles=new ArrayList<File>();    //                        Iterator<File> iterator= stateFiles.iterator();        for (String text : texts) {            //第一种方式:从Iterator中删除目标集合中的元素            /*while(iterator.hasNext()){                File tempStateFile=iterator.next();                if (text.equals(tempStateFile.getName())) {                    iterator.remove();                }            }*/            //第二种方式:在遍历集合后将满足条件的元素存入另一集合中,遍历完毕之后,再调用集合的 removeAll 方法,传入待删除元素集合            for (File stateFile : stateFiles) {                System.out.println("____________"+text.equals(stateFile.getName()));                if (text.equals(stateFile.getName())) {                    delFiles.add(stateFile);                }            }        }        stateFiles.removeAll(delFiles);    }    System.out.println("0000----");    System.out.println("stateFiles.size:"+stateFiles.size());}

   

两种方式在遍历一个集合后删除该集合的元素,if的条件判断都为真

        使用Iterator的方式,最后输出的size为2,??
        使用根据另一个集合中的元素删除本集合中的元素(removeAll),最后输出结果为0---正确的
        ---这两种方式有出入
0 0
原创粉丝点击