如何合并两个 ArrayList

JavaJavaBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

介绍

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


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL java(("`Java`")) -.-> java/BasicSyntaxGroup(["`Basic Syntax`"]) java(("`Java`")) -.-> java/DataStructuresGroup(["`Data Structures`"]) java(("`Java`")) -.-> java/ObjectOrientedandAdvancedConceptsGroup(["`Object-Oriented and Advanced Concepts`"]) java(("`Java`")) -.-> java/FileandIOManagementGroup(["`File and I/O Management`"]) java/BasicSyntaxGroup -.-> java/output("`Output`") java/DataStructuresGroup -.-> java/arrays("`Arrays`") java/DataStructuresGroup -.-> java/collections_methods("`Collections Methods`") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/classes_objects("`Classes/Objects`") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/arraylist("`ArrayList`") java/FileandIOManagementGroup -.-> java/stream("`Stream`") subgraph Lab Skills java/output -.-> lab-117440{{"`如何合并两个 ArrayList`"}} java/arrays -.-> lab-117440{{"`如何合并两个 ArrayList`"}} java/collections_methods -.-> lab-117440{{"`如何合并两个 ArrayList`"}} java/classes_objects -.-> lab-117440{{"`如何合并两个 ArrayList`"}} java/arraylist -.-> lab-117440{{"`如何合并两个 ArrayList`"}} java/stream -.-> lab-117440{{"`如何合并两个 ArrayList`"}} end

创建 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 中合并唯一元素的示例。希望本实验对你有所帮助!

您可能感兴趣的其他 Java 教程