行业资讯 2025年08月6日
0 收藏 0 点赞 151 浏览 2165 个字
摘要 :

文章目录 1.合并两个ArrayList并保留所有元素 1.1. 使用List.addAll() 1.2. 使用Stream.flatMap() 2.合并两个ArrayList,排除重复元素 2.1. 使用LinkedHashSet 2.2. ……




  • 1.合并两个ArrayList并保留所有元素
    • 1.1. 使用List.addAll()
    • 1.2. 使用Stream.flatMap()
  • 2.合并两个ArrayList,排除重复元素
    • 2.1. 使用LinkedHashSet
    • 2.2. 使用removeAll/addAll

    学习如何将两个ArrayList合并成的单个ArrayList。还学习如何在组合列表中合并ArrayList而不包括重复项。

    1.合并两个ArrayList并保留所有元素

    这种方法保留来自两个列表的所有元素,包括重复元素。合并列表的大小将是两个列表大小的算术和。

    1.1. 使用List.addAll()

    addAll()方法是将给定列表的所有元素附加到另一个列表末尾的最简单方法。使用此方法,我们可以将多个列表合并成一个单一列表。

    // 合并Arraylist示例
    ArrayList<String> listOne = new ArrayList<>(Arrays.asList(\"a\", \"b\", \"c\"));
    ArrayList<String> listTwo = new ArrayList<>(Arrays.asList(\"c\", \"d\", \"e\"));
    listOne.addAll(listTwo);  //合并两个List
    System.out.println(listOne);
    System.out.println(listTwo);
    

    程序输出:

    [a, b, c, c, d, e]
    [c, d, e]
    

    提示:使用像guava或Apache commons lang这样的库可以有更多合并列表的方法,但它们都只使用addAll()方法。因此,最好直接使用此方法。

    1.2. 使用Stream.flatMap()

    Java 8流提供了解决大多数问题的一行解决方案,同时代码看起来更清晰。Stream的flatMap()方法可用于在单个流中获取两个或更多列表的元素,然后将流元素收集到ArrayList中。

    推荐使用Stream,因为我们无需修改原始的List实例,而是创建一个包含来自两个列表的元素的第三个List。

    ArrayList<String> listOne = new ArrayList<>(Arrays.asList(\"a\", \"b\", \"c\"));
    ArrayList<String> listTwo = new ArrayList<>(Arrays.asList(\"c\", \"d\", \"e\"));
    List<String> combinedList = Stream.of(listOne, listTwo)
            .flatMap(x -> x.stream())
            .collect(Collectors.toList());
    System.out.println(combinedList);
    

    程序输出:

    [a, b, c, c, d, e]
    

    在这些示例中,我们合并了列表,但在最终列表中有重复的元素。在许多情况下,这可能不是期望的输出。接下来,我们将学习如何合并这些List,并去除重复项。

    2.合并两个ArrayList,排除重复元素

    要获得合并列表中排除重复元素的列表,有两种方法:

    2.1. 使用LinkedHashSet

    Java Sets仅允许唯一的元素。当我们将两个列表都放入一个Set中,该Set将表示组合的所有唯一元素的列表。在我们的示例中,我们使用LinkedHashSet,因为它还将保留元素的顺序。

    ArrayList<String> listOne = new ArrayList<>(Arrays.asList(\"a\", \"b\", \"c\"));
    ArrayList<String> listTwo = new ArrayList<>(Arrays.asList(\"c\", \"d\", \"e\"));
    //将 List中的项添加到Set中
    Set<String> set = new LinkedHashSet<>(listOne);
    set.addAll(listTwo);
    //将 Set 转换为 ArrayList
    ArrayList<String> combinedList = new ArrayList<>(set);
    System.out.println(combinedList);
    

    程序输出:

    [a, b, c, d, e]
    

    2.2. 使用removeAll/addAll

    这是一个两步过程,我们可以

    • 从第一个列表中删除第二个列表的所有元素
    • 然后将第一个列表添加到第二个列表中。

    这将为用户提供不包含重复元素的合并列表。

    ArrayList<String> listOne = new ArrayList<>(Arrays.asList(\"a\", \"b\", \"c\"));
    ArrayList<String> listTwo = new ArrayList<>(Arrays.asList(\"c\", \"d\", \"e\"));
    List<String> listTwo = new ArrayList<>(listTwo);
    listTwoCopy.removeAll(listOne);
    listOne.addAll(listTwoCopy);
    System.out.println(listOne);
    

    程序输出:

    [a, b, c, d, e]
    

    以上就是Java中如何合并两个ArrayList的全部内容。

微信扫一扫

支付宝扫一扫

版权: 转载请注明出处:https://www.zuozi.net/9319.html

管理员

相关推荐
2025-08-06

文章目录 一、Reader 接口概述 1.1 什么是 Reader 接口? 1.2 Reader 与 InputStream 的区别 1.3 …

988
2025-08-06

文章目录 一、事件溯源 (一)核心概念 (二)Kafka与Golang的优势 (三)完整代码实现 二、命令…

465
2025-08-06

文章目录 一、证明GC期间执行native函数的线程仍在运行 二、native线程操作Java对象的影响及处理方…

348
2025-08-06

文章目录 一、事务基础概念 二、MyBatis事务管理机制 (一)JDBC原生事务管理(JdbcTransaction)…

456
2025-08-06

文章目录 一、SnowFlake算法核心原理 二、SnowFlake算法工作流程详解 三、SnowFlake算法的Java代码…

517
2025-08-06

文章目录 一、本地Jar包的加载操作 二、本地Class的加载方法 三、远程Jar包的加载方式 你知道Groo…

832
发表评论
暂无评论

还没有评论呢,快来抢沙发~

助力内容变现

将您的收入提升到一个新的水平

点击联系客服

在线时间:08:00-23:00

客服QQ

122325244

客服电话

400-888-8888

客服邮箱

122325244@qq.com

扫描二维码

关注微信客服号