Java Stream API 提供了一种非常方便的方式来比较两个 List 的差异,并取出不同的对象

Java Stream API 提供了一种非常方便的方式来比较两个 List 的差异,并取出不同的对象。这可以通过使用 distinct() 和 filter() 方法来实现。

假设我们有两个 List,一个是 list1,另一个是 list2,我们想找出 list1 中存在但 list2 中不存在的元素。

以下是如何实现的示例代码:

java 复制代码
import java.util.Arrays;  
import java.util.List;  
import java.util.stream.Collectors;  
  
public class Main {  
    public static void main(String[] args) {  
        List<String> list1 = Arrays.asList("Apple", "Banana", "Cherry", "Date", "Elderberry");  
        List<String> list2 = Arrays.asList("Apple", "Banana", "Cherry", "Fig", "Grape");  
  
        List<String> diffList1 = list1.stream()  
                                      .filter(s -> !list2.contains(s))  
                                      .collect(Collectors.toList());  
  
        System.out.println("Difference in list1: " + diffList1);  
    }  
}

在这个例子中,我们使用了 stream() 方法来创建一个从 list1 的元素到流的管道。然后,我们使用了 filter() 方法来过滤出 list2 中不存在的元素。最后,我们使用 collect() 方法将结果收集到一个新的 List 中。输出结果将是 list1 中存在但 list2 中不存在的元素。

如果你想找出 list2 中存在但 list1 中不存在的元素,只需将上述代码中的 list1 和 list2 交换即可:

java 复制代码
import java.util.Arrays;  
import java.util.List;  
import java.util.stream.Collectors;  
  
public class Main {  
    public static void main(String[] args) {  
        List<String> list1 = Arrays.asList("Apple", "Banana", "Cherry", "Date", "Elderberry");  
        List<String> list2 = Arrays.asList("Apple", "Banana", "Cherry", "Fig", "Grape");  
  
        List<String> diffList2 = list2.stream()  
                                      .filter(s -> !list1.contains(s))  
                                      .collect(Collectors.toList());  
  
        System.out.println("Difference in list2: " + diffList2);  
    }  
}
相关推荐
盐真卿5 分钟前
python第八部分:高级特性(二)
java·开发语言
上海合宙LuatOS10 分钟前
LuatOS核心库API——【audio 】
java·网络·单片机·嵌入式硬件·物联网·音视频·硬件工程
汤姆yu14 分钟前
基于springboot的尿毒症健康管理系统
java·spring boot·后端
TT哇17 分钟前
【实习】银行经理端线下领取扫码功能实现方案
java
野犬寒鸦18 分钟前
从零起步学习JVM || 第一章:类加载器与双亲委派机制模型详解
java·jvm·数据库·后端·学习
黎雁·泠崖34 分钟前
【魔法森林冒险】2/14 抽象层设计:Figure/Person类(所有角色的基石)
java·开发语言
怒放吧德德1 小时前
后端 Mock 实战:Spring Boot 3 实现入站 & 出站接口模拟
java·后端·设计
biyezuopinvip1 小时前
基于Spring Boot的企业网盘的设计与实现(任务书)
java·spring boot·后端·vue·ssm·任务书·企业网盘的设计与实现
脸大是真的好~1 小时前
EasyExcel的使用
java·excel
小宋10211 小时前
Java 项目结构 vs Python 项目结构:如何快速搭一个可跑项目
java·开发语言·python