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

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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值