java - 如何使用 lambda 和条件修复从列表中删除重复项
问题描述
我想知道为什么返回的列表包含“1”
List<Integer> a= Arrays.asList(1,2,3,4,5);
List<Integer> b=Arrays.asList(1,7,8,9,10);
a.stream().filter(first -> (b.stream().anyMatch(second -> first.compareTo(second)!=0)))
.forEach(System.out::println);
解决方案
我想你正在寻找:
a.stream().filter(first -> !b.contains(first)).forEach(System.out::println);
在这里,结果流将仅包含 list 中不存在的值b
。
推荐阅读
- node.js - npm 调试模块:如何以精美的字体显示对象?
- javascript - BrowserSync:拒绝执行内联脚本,锚标签不起作用
- apache-spark-sql - 分析表计算统计信息 - 未显示统计信息
- swift - UITableView 或 UILabel 在使用委托和协议观察者方法时发现 NIL,因为它在 viewDidLoad 之前调用
- javascript - 试图创造一个弹跳的波纹圆圈效果
- android - 错误:对于 FCM 通知没有回退可绘制的自适应图标,可能会导致 Android Oreo 上的不可逆转的崩溃
- ruby-on-rails - 谷歌日历 API:“你需要有这个日历的作者权限。”
- python - 从 for 循环到数据框的结果,然后到 csv
- javascript - 点击离开或页面内锚链接后如何删除汉堡菜单
- r - 在正文中创建一个带有 ggplot 的函数并在每次调用时生成两个绘图输出