为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

holdtom 2021-12-30 20:15:44
我有两个列表 A 和 B。都有数百万个元素。我想比较并获取列表 A 中但不在列表 B 中的所有元素。下面是获取元素的低效方法。   if (!B.containsAll(A)) {        for (Integer id : A) {            if (!B.contains(id)) {                System.out.println(id);            }        }    }我正在寻找一种有或没有流的有效方法来获取元素在这方面的帮助表示赞赏。
查看完整描述

2 回答

?
12345678_0001

TA贡献1802条经验 获得超5个赞

你不需要比较


List<Integer> c = new ArrayList<>(a);

c.removeAll(b);

如果您不介意丢失原始列表数据


a.removeAll(b);


查看完整回答
反对 回复 2021-12-30
?
茅侃侃

TA贡献1842条经验 获得超21个赞

像这样的东西应该足够了:


Set<Integer> container = new HashSet<>(ListB);

ListA.stream()

     .filter(id -> !container.contains(id))

     .forEach(System.out::println);

或非流:


Set<Integer> container = new HashSet<>(ListB);

for(Integer id : ListA)

    if(!container.contains(id));

       System.out.println(id);


查看完整回答
反对 回复 2021-12-30
  • 2 回答
  • 0 关注
  • 148 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信