You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Java Stream筛选list2中不在list1的独有元素?

用Java Stream获取List2独有的元素

要获取list2中不存在于list1的元素,distinct()方法并不适用——它仅用于去除集合内的重复元素,无法筛选两个集合的差集。正确的实现方式是结合filter方法判断元素是否存在于list1,再收集结果。

基础实现(适合小数据量)

直接利用List的contains方法过滤:

List<String> list1 = List.of("DX4555", "DY4897", "FG4333", "IH09992");
List<String> list2 = List.of("DX4555", "DY4897", "FG4333", "IH09992", "LJ48833", "YTR3888");

// Java 16+ 使用toList(),低版本替换为collect(Collectors.toList())
List<String> uniqueInList2 = list2.stream()
    .filter(element -> !list1.contains(element))
    .toList();

// 输出结果:["LJ48833","YTR3888"]

性能优化版(适合大数据量)

List的contains方法时间复杂度为O(n),数据量大时效率偏低。可以先将list1转换为HashSet(其contains方法时间复杂度为O(1)),再执行过滤:

Set<String> list1Set = new HashSet<>(list1);
List<String> uniqueInList2 = list2.stream()
    .filter(element -> !list1Set.contains(element))
    .toList();

内容的提问来源于stack exchange,提问作者Emmanuel Njorodongo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 18:58:09