如何在Java中合并两个列表?

2023-11-06

在 Java 中合并两个列表通常是一个有用的操作。这些列表可以是 ArrayList 或 LinkedList。

如何在 Java 中合并两个列表

在 Java 中,我们可以通过多种方式合并两个列表。让我们探索一些简单的方法来完成您的工作!

1. addAll()方法合并两个列表

addAll() 方法是合并两个列表的最简单且最常见的方法。

对于数组列表:

import java.util.ArrayList;

public class Main {

    public static void main(String[] args)
    {
ArrayList<Integer> l1 = new ArrayList<Integer>();
        l1.add(1);
        l1.add(3);
        l1.add(5);
ArrayList<Integer> l2 = new ArrayList<Integer>();
        l2.add(2);
        l2.add(4);
        l2.add(6);
ArrayList<Integer> merge = new ArrayList<Integer>();
        merge.addAll(l1);
        merge.addAll(l2);
System.out.println("L1 : "+l1);
System.out.println("L2 : "+l2);
System.out.println("Merged : "+merge);
}
}
Merge Arraylists Addall 1
Output

请注意,元素出现的顺序与调用 addAll() 的顺序相匹配。

对于链接列表:

import java.util.LinkedList;

public class Main {

    public static void main(String[] args)
    {
LinkedList<Integer> L1 = new LinkedList<>();
        L1.add(1);
        L1.add(3);
        L1.add(5);
LinkedList<Integer> L2 = new LinkedList<>();
        L2.add(2);
        L2.add(4);
        L2.add(6);
LinkedList<Integer> merged = new LinkedList<>();
        merged.addAll(L1);
        merged.addAll(L2);

System.out.println("L1 : "+L1);
System.out.println("L2 : "+L2);
System.out.println("Merged : "+merged);
}
}
LinkedList AddAll 1
Output

2. Java中使用迭代器合并两个列表

我们可以使用迭代器来遍历列表并合并。

对于数组列表:

import java.util.ArrayList;

public class Main {

    public static void main(String[] args)
    {
ArrayList<Integer> l1 = new ArrayList<Integer>();
        l1.add(1);
        l1.add(3);
        l1.add(5);
ArrayList<Integer> l2 = new ArrayList<Integer>();
        l2.add(2);
        l2.add(4);
        l2.add(6);

ArrayList<Integer> Itmerge = new ArrayList<>();
        Iterator i = l1.iterator();
        while (i.hasNext()) {
           Itmerge.add((int)i.next());
        }
        i=l2.iterator();
        while (i.hasNext()) {
            Itmerge.add((int)i.next());
        }
System.out.println("L1 : "+l1);
System.out.println("L2 : "+l2);
System.out.println("Merged : "+Itmerge);
}
}

Iterator首先遍历ArrayList l1并将所有元素添加到Itmerge中,然后遍历ArrayList l2并将所有元素添加到Itmerge中。

Iterator Arraylist 1
Output

合并两个列表的另一种方法是简单地将元素从一个列表添加到另一个列表。除非您需要保持现有数据完整,否则无需创建新列表。

Iterator i = l1.iterator();
while (i.hasNext())
{
  l2.add((int)i.next());
}

System.out.println("Merged : "+l2);

在这种情况下,所有元素都被添加到列表 l2 中。这节省了创建额外列表所花费的内存。将一个列表的元素添加到另一个列表可以节省额外的遍历。

Single Iter Merge 1
Output

对于链表:

import java.util.LinkedList;

public class Main {

    public static void main(String[] args)
    {
LinkedList<Integer> L1 = new LinkedList<>();
        L1.add(1);
        L1.add(3);
        L1.add(5);
LinkedList<Integer> L2 = new LinkedList<>();
        L2.add(2);
        L2.add(4);
        L2.add(6);
LinkedList<Integer> merged = new LinkedList<>();
      
        Iterator i = L1.iterator();
        while (i.hasNext()) {
           L2.add((int)i.next());
        }
System.out.println(L2);
}
}

Linkedlist Merge iterator

3.使用for循环合并多个列表

For 循环对于合并两个列表也很有用。

对于数组列表:

import java.util.ArrayList;

public class Main {

    public static void main(String[] args)
    {
ArrayList<Integer> l1 = new ArrayList<Integer>();
        l1.add(1);
        l1.add(3);
        l1.add(5);
ArrayList<Integer> l2 = new ArrayList<Integer>();
        l2.add(2);
        l2.add(4);
        l2.add(6);
ArrayList<Integer> Itmerge = new ArrayList<>();
        for(int i=0;i<l1.size();i++){
            Itmerge.add(l1.get(i));
        }
        for(int i=0;i<l2.size();i++){
            Itmerge.add(l2.get(i));
        }
System.out.println(Itmerge);
}
}

该循环遍历两个 ArrayList 并将每个元素一一添加到新创建的列表中。

将一个列表的元素添加到另一个列表可以节省额外的遍历。

 for(int i=0;i<l2.size();i++){
      l1.add(l2.get(i));
   }
System.out.println(l1);

这个 for 循环将 l2 的元素一一添加到 l1 中。在这种情况下,l1 将包含合并元素的最终列表。

Forloop Arraylist 1
Output

对于链表:

为了更好地理解链表的遍历,让我们定义自己的链表。

这将需要一个节点类。一个节点需要两个东西,数据和下一个节点的地址。

类节点的代码:

public class node {
    int data;
    node next;
    public node(int data){
        this.data=data;
        next=null;
    }
}

请注意,next 是节点类型,因为它存储节点的地址。创建与前面示例中使用的相同的两个列表:

public class Main {

    public static void main(String[] args)
    {        
        node head = new node(1);
        node temp = new node(3);
        head.next=temp;
        node temp1 = new node(5);
        temp.next=temp1;
        node head2 = new node(2);
        node temp2 = new node(4);
        head2.next=temp2;
        node temp3 = new node(6);
        temp2.next=temp3;
}
}

这将创建如下所示的列表:

Lists 1

每个箭头代表下一个链接。要将两个列表链接在一起,我们需要将一个列表的末尾链接到第二个列表的开头。

List Merge Graphic 1

这可以按如下方式完成:

node trav=head;
while(trav.next!=null){
    trav=trav.next;
}
trav.next=head2;

节点“trav”被启动并指向第一个列表的头部。遍历第一个列表,直到 trav 到达第一个列表的末尾。

当到达末尾时,它将最后一个节点的下一个链接更改为第二个列表的头部。这形成了两个列表之间的链接。

打印所有列表:

public class Main {

    public static void main(String[] args)
    { 
        node head = new node(1);
        node temp = new node(3);
        head.next=temp;
        node temp1 = new node(5);
        temp.next=temp1;
        node head2 = new node(2);
        node temp2 = new node(4);
        head2.next=temp2;
        node temp3 = new node(6);
        temp2.next=temp3;

//printing list 1
        System.out.println("List 1 :");
        node trav = head;

        while(trav!=null){
            System.out.print(trav.data + " ");
            trav=trav.next;
        }

        System.out.println();
//prinitng list 2
        System.out.println("List 2 :");
        trav= head2;

        while(trav!=null){
            System.out.print(trav.data + " ");
            trav=trav.next;
        }
        System.out.println();

//merging the two list

         trav=head;
        while(trav.next!=null){
            trav=trav.next;
        }
        trav.next=head2;
// printing merged list
        System.out.println("merged list :");
        trav = head;
        while(trav!=null){
            System.out.print(trav.data + " ");
            trav=trav.next;
        }
}
}
Output Forloop Lists 1
Output

结论

我们看到了在 Java 中合并两个列表的不同方法。这些范围从内置函数到基本的 for 循环。上面的最后一个示例让您更深入地了解列表在 Java 中的工作原理。使用上一个示例的方法,您可以更好地控制元素在列表中出现的顺序。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在Java中合并两个列表? 的相关文章

随机推荐

  • Linux 中的 awk 命令及示例

    Awk 是一种通用脚本语言 专为高级文本处理而设计 它主要用作报告和分析工具 与大多数其他过程性编程语言不同 awk 是数据驱动的 这意味着您定义一组要针对输入文本执行的操作 它获取输入数据 对其进行转换 并将结果发送到标准输出 本文涵盖了
  • 如何在 Debian 9 上安装 Minecraft 服务器

    我的世界 是有史以来最受欢迎的游戏之一 这是一款关于建造各种结构并进行冒险的沙盒视频游戏 本教程介绍了如何在 Debian 9 上安装和配置 Minecraft 服务器 我们将使用 Systemd 来运行 Minecraft 服务器和mcr
  • 如何在 Ubuntu 18.04 上安装 Opera Web 浏览器

    Opera是世界上最流行的跨平台网络浏览器之一 它是专为现代网络构建的快速 易于使用且安全的浏览器 Opera 基于与Chrome并提供类似的浏览体验 并允许您从 Google 官方网上应用店安装 Chrome 扩展程序 它具有内置功能 例
  • 如何在 Vim / Vi 中显示行号

    Vim Vi 是许多软件开发人员和 L inux 系统管理员首选的文本编辑器 默认情况下 Vim 不显示行号 但可以轻松打开它们 Vim 支持三种行号模式 可帮助您浏览文件 除了标准的绝对行编号之外 Vim 还支持相对和混合行编号模式 本文
  • 如何在 CentOS 7 上安装 Webmin

    Webmin是一个用于 Linux UNIX 系统管理的开源 Web 控制面板 Webmin 允许您管理用户 组 磁盘配额以及配置最流行的服务 包括 Web FTP 电子邮件和数据库服务器 本教程介绍如何在 CentOS 7 服务器上安装
  • 如何在 Linux 中更改 SSH 端口

    默认情况下 SSH 侦听端口 22 更改默认 SSH 端口可以降低自动攻击的风险 从而为您的服务器增加了额外的安全层 本教程介绍如何更改 Linux 中的默认 SSH 端口 我们还将向您展示如何配置防火墙以允许访问新的 SSH 端口 保护服
  • 如何使用 SOCKS 隧道在没有 VPN 的情况下安全地路由 Web 流量

    作者选择了COVID 19 救济基金接受捐赠作为为捐款而写程序 介绍 在某些时候 您可能会发现自己所在的网络不安全或防火墙限制过于严格 并且您需要确保没有人在监视您的流量 一种解决方案是使用 VPN 但许多 VPN 需要在您的计算机上安装特
  • Java 集合 sort()

    今天我们将研究Java集合的排序方法 在与java中的集合 我们经常需要对数据进行排序 Java 集合 sort Java Collections类为我们提供了非常方便的方法Collections sort 对所有进行排序List实施例如链
  • 提高 React 应用程序性能的 5 个技巧

    您的 React 应用程序是否感觉有点迟缓 您是否因为可能看到的内容而害怕打开 Chrome DevTools 中的 paint flash 试试这 5 个性能技巧 本文包含 React 开发的 5 个性能技巧 您可以使用此目录快速浏览本文
  • 如何在 Linux 上读取和设置环境变量和 Shell 变量

    介绍 当通过 shell 会话与服务器交互时 shell 会编译许多信息来确定其行为和对资源的访问 其中一些设置包含在配置设置中 而其他设置则由用户输入确定 shell 跟踪所有这些设置和详细信息的一种方法是通过它维护的一个称为环境 环境是
  • Python 当前日期时间

    我们可以使用Python datetime模块来获取本地系统的当前日期和时间 from datetime import datetime Current date time in local system print datetime no
  • 如何在 CentOS 7 上安装和使用 Docker

    介绍 Docker 是一个应用程序 可以让在容器中运行应用程序进程变得简单 容易 就像虚拟机一样 只是更便携 更资源友好 更依赖于主机操作系统 有关 Docker 容器的不同组件的详细介绍 请查看Docker 生态系统 常用组件简介 在 C
  • 如何在 Ubuntu 18.04 上安装/卸载 NodeJS

    NodeJS 是一个 JavaScript 框架 可让您轻松构建快速的网络应用程序 在本指南中 我们将深入研究如何在 Ubuntu 18 04 上安装 NodeJS 步骤 1 将 NodeJS PPA 添加到 Ubuntu 18 04 首先
  • 在 C/C++ 中使用 getch() 函数

    在本文中 我们将了解在 C C 中使用 getch 函数 如果您想读取从键盘输入的字符 getch 函数非常有用 虽然这不是 C 标准的一部分 但这仍然是 POSIX C 函数 因此 我们仍然可以在 Windows Linux Mac 上使
  • 如何保护 Ubuntu 14.04 上的 Redis 安装

    介绍 Redis 是一种内存中 NoSQL 键值缓存和存储 也可以持久保存到磁盘上 本教程展示如何实现 Redis 服务器的基本安全性 但是 请记住 Redis 是为以下用户而设计的 值得信赖的客户 in a 可信环境 本身没有强大的安全功
  • Python 漂亮打印 JSON

    我们可以使用Python json 模块漂亮地打印 JSON 数据 建议使用 json 模块来处理 JSON 文件 我们可以使用dumps 方法来获取格式漂亮的 JSON 字符串 1 Python漂亮打印JSON字符串 import jso
  • 如何在 JavaScript 中使用运算符进行数学运算

    介绍 数学运算是任何编程语言最基本和通用的功能之一 在 JavaScript 中 数字经常用于常见任务 例如查找浏览器窗口大小 获取货币交易的最终价格以及计算网站文档中元素之间的距离 尽管对数学的高度理解并不是成为一名有能力的开发人员的先决
  • 如何实现SQL INSTR()函数?

    嘿伙计 在这篇文章中 我们将了解SQL INSTR 函数详细 SQL INSTR 的工作原理 SQL 作为一种查询语言 包含各种内置函数来处理数据库的字符串数据值 SQL INSTR 函数就是这样一个有趣的函数 SQL INSTR func
  • Java 从 URL 下载文件

    今天我们将学习如何用java从URL下载文件 我们可以用java net URL openStream java程序中从URL下载文件的方法 我们可以使用Java NIO Channels或Java IO InputStream从URL打开
  • 如何在Java中合并两个列表?

    在 Java 中合并两个列表通常是一个有用的操作 这些列表可以是 ArrayList 或 LinkedList 如何在 Java 中合并两个列表 在 Java 中 我们可以通过多种方式合并两个列表 让我们探索一些简单的方法来完成您的工作 1