迭代器Iterator的remove()方法使用的注意事项

下面是两种方法
点击查看代码
public static void main(String[] args) {
        List<Integer> a = new ArrayList<>();
        List<Integer> b = new ArrayList<>();
        a.add(1);
        a.add(2);
        a.add(3);
        b.add(1);
        b.add(3);
        b.add(2);
        if (CollectionUtil.isNotEmpty(a)) {
            if (CollectionUtil.isNotEmpty(b)) {
                for (int i = 0; i < a.size(); i++) {
                    Integer intA = a.get(i);
                    System.err.println(i + "i:" + intA);
                    for (int j = 0; j < b.size(); j++) {
                        Integer intB = b.get(j);
                        System.err.println(j + "j:" + intB);
                        if (intA.equals(intB)) {
                            a.remove(i);
                            b.remove(j);
                            i--;
                            break;
                        }
                    }
                }
                Iterator<Integer> ai = a.iterator();
                Iterator<Integer> bi = b.iterator();
                while (ai.hasNext()) {
                    Integer an = ai.next();
                    while (bi.hasNext()) {
                        Integer bn = bi.next();
                        if (an.equals(bn)) {
                            ai.remove();
                            bi.remove();
                            break;
                        }
                    }
                }
            }
        }
        System.out.println(a);
        System.out.println(b);
    }
参考


posted @   fchhk  阅读(49)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示