如何合并两个 ArrayList

JavaBeginner
立即练习

介绍

在 Java 中,ArrayList 是集合框架中 List 接口的一个实现类,用于存储数据。合并两个 ArrayList 实际上是将两个 ArrayList 的元素组合成一个 ArrayList 的过程。当我们需要将多个数据流收集到一个流中时,这一操作非常有用。

创建 ArrayLists

首先,让我们创建两个需要合并的 ArrayLists。以下是一个创建两个整数类型 ArrayLists 的示例:

import java.util.ArrayList;
import java.util.Arrays;

public class Main {
    public static void main(String[] args){
        ArrayList<Integer> arrList1 = new ArrayList<>();
  arrList1.add(1030);
  arrList1.add(1020);
  arrList1.add(1010);
  arrList1.add(1040);
  System.out.println(arrList1);

        ArrayList<Integer> arrList2 = new ArrayList<>(Arrays.asList(1050,1060,1070));
  System.out.println(arrList2);
    }
}

要运行此代码,请在终端中输入以下命令:

javac Main.java && java Main

这将输出以下内容:

[1030, 1020, 1010, 1040]
[1050, 1060, 1070]

使用 addAll() 合并 ArrayLists

要使用 addAll() 方法合并两个 ArrayLists,请参考以下代码:

import java.util.ArrayList;
import java.util.Arrays;

public class Main {
    public static void main(String[] args){
        ArrayList<Integer> arrList1 = new ArrayList<>();
  arrList1.add(1030);
  arrList1.add(1020);
  arrList1.add(1010);
  arrList1.add(1040);
  System.out.println(arrList1);

        ArrayList<Integer> arrList2 = new ArrayList<>(Arrays.asList(1050,1060,1070));
  System.out.println(arrList2);

  // Joining two ArrayList
  arrList1.addAll(arrList2);
  System.out.println("After Joining:");
  System.out.println(arrList1);
    }
}

要运行此代码,请在终端中输入以下命令:

javac Main.java && java Main

这将输出以下内容:

[1030, 1020, 1010, 1040]
[1050, 1060, 1070]
After Joining:
[1030, 1020, 1010, 1040, 1050, 1060, 1070]

使用 flatMap() 合并 ArrayLists

我们也可以通过使用 flatMap() 方法和 distinct() 方法来合并两个 ArrayLists,具体代码如下:

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;

public class Main {
 public static void main(String[] args){
  ArrayList<Integer> arrList1 = new ArrayList<>();
  arrList1.add(1030);
  arrList1.add(1020);
  arrList1.add(1010);
  arrList1.add(1040);
  System.out.println(arrList1);

  ArrayList<Integer> arrList2 = new ArrayList<>(Arrays.asList(1050,1030,1070));
  System.out.println(arrList2);

  // Joining two ArrayList
  List<Integer> arrList3 = Stream.of(arrList1, arrList2)
         .flatMap(Collection::stream)
         .distinct()
         .collect(Collectors.toList());
  System.out.println("After Joining:");
  System.out.println(arrList3);
 }
}

要运行此代码,请在终端中输入以下命令:

javac Main.java && java Main

这将输出以下内容:

[1030, 1020, 1010, 1040]
[1050, 1030, 1070]
After Joining:
[1030, 1020, 1010, 1040, 1050, 1070]

完整代码

以下是 Java 中合并两个 ArrayLists 的完整代码:

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;

public class Main {
 public static void main(String[] args){
  ArrayList<Integer> arrList1 = new ArrayList<>();
  arrList1.add(1030);
  arrList1.add(1020);
  arrList1.add(1010);
  arrList1.add(1040);
  System.out.println(arrList1);

  ArrayList<Integer> arrList2 = new ArrayList<>(Arrays.asList(1050,1030,1070));
  System.out.println(arrList2);

  // Joining two ArrayList
  List<Integer> arrList3 = Stream.of(arrList1, arrList2)
         .flatMap(Collection::stream)
         .distinct()
         .collect(Collectors.toList());
  System.out.println("After Joining:");
  System.out.println(arrList3);
 }
}

运行代码

要运行代码,请在终端中输入以下命令:

javac Main.java && java Main

这将输出以下内容:

[1030, 1020, 1010, 1040]
[1050, 1030, 1070]
After Joining:
[1030, 1020, 1010, 1040, 1050, 1070]

总结

在本实验中,我们向你展示了如何使用 List 的 addAll() 方法和流 API 的 flatMap() 方法在 Java 中合并两个 ArrayLists。我们还展示了如何从两个不同的 ArrayLists 中合并唯一元素的示例。希望本实验对你有所帮助!