猿问

使用java流比较两个字符串列表

我有两个列表 A 和 B。都有数百万个元素。我想比较并获取列表 A 中但不在列表 B 中的所有元素。下面是获取元素的低效方法。


   if (!B.containsAll(A)) {

        for (Integer id : A) {

            if (!B.contains(id)) {

                System.out.println(id);

            }

        }

    }

我正在寻找一种有或没有流的有效方法来获取元素


在这方面的帮助表示赞赏。


holdtom
浏览 149回答 2
2回答

12345678_0001

你不需要比较List<Integer> c = new ArrayList<>(a);c.removeAll(b);如果您不介意丢失原始列表数据a.removeAll(b);

茅侃侃

像这样的东西应该足够了:Set<Integer> container = new HashSet<>(ListB);ListA.stream()&nbsp; &nbsp; &nbsp;.filter(id -> !container.contains(id))&nbsp; &nbsp; &nbsp;.forEach(System.out::println);或非流:Set<Integer> container = new HashSet<>(ListB);for(Integer id : ListA)&nbsp; &nbsp; if(!container.contains(id));&nbsp; &nbsp; &nbsp; &nbsp;System.out.println(id);
随时随地看视频慕课网APP

相关分类

Java
我要回答