Java合并两个List并去掉重复项

今天在工作中遇到了需要将两个List<String>合并成一个,并去重的功能点。这种需求点很少,但是还真会出现。

下面给大家展示下我是怎么实现的

方法一:使用HashSet

java 复制代码
    public static void main(String[] args) {
//        String[] arr1 = {"str3", "str1", "str2"};
//        List<String> list1 = new ArrayList<>(Arrays.asList(arr1));
        List<String> list1 = new ArrayList<>();
        list1.add("str3");
        list1.add("str1");
        list1.add("str2");

        List<String> list2 = new ArrayList<>();
        list2.add("str3");
        list2.add("str2");
        list2.add("str4");

        Set<String> set = new HashSet<>(list1);
        set.addAll(list2);
        List<String> list = new ArrayList<>(set);
        System.out.println(list);
}
// 输出结果为:
// [str3, str4, str1, str2]

可以看出,使用HashSet是不排序的,顺序可能会乱

方法二:使用Stream进行去重,但是仅支持JDK1.8及以上

java 复制代码
    public static void main(String[] args) {
//        String[] arr1 = {"str3", "str1", "str2"};
//        List<String> list1 = new ArrayList<>(Arrays.asList(arr1));
        List<String> list1 = new ArrayList<>();
        list1.add("str3");
        list1.add("str1");
        list1.add("str2");

        List<String> list2 = new ArrayList<>();
        list2.add("str3");
        list2.add("str2");
        list2.add("str4");
        
        List<String> collect = Stream.of(list1, list2)
                .flatMap(Collection::stream)
                .distinct()
                .collect(Collectors.toList());
        System.out.println(collect);
    }

// 输出
// [str3, str1, str2, str4]

比较小众的写法,但是真的好用,而且看起来更简洁

相关推荐
叶落阁主4 分钟前
Neovim 插件 i18n.nvim 介绍
java·vue.js·vim
渣哥5 分钟前
让集合线程安全的几种靠谱方法
java
dylan_QAQ7 分钟前
Java转Go全过程06-工程管理
java·后端·go
鲸屿19519 分钟前
python之socket网络编程
开发语言·网络·python
没有梦想的咸鱼185-1037-16631 小时前
基于R语言机器学习方法在生态经济学领域中的实践技术应用
开发语言·机器学习·数据分析·r语言
a587691 小时前
消息队列(MQ)初级入门:详解RabbitMQ与Kafka
java·分布式·microsoft·面试·kafka·rabbitmq
千里码aicood1 小时前
【springboot+vue】党员党建活动管理平台(源码+文档+调试+基础修改+答疑)
java·数据库·spring boot
Chan161 小时前
【智能协同云图库】基于统一接口架构构建多维度分析功能、结合 ECharts 可视化与权限校验实现用户 / 管理员图库统计、通过 SQL 优化与流式处理提升数据
java·spring boot·后端·sql·spring·intellij-idea·echarts
先做个垃圾出来………1 小时前
差分数组(Difference Array)
java·数据结构·算法
向上的车轮1 小时前
基于go语言的云原生TodoList Demo 项目,验证云原生核心特性
开发语言·云原生·golang