Java 把一个ArrayList的元素复制到另一个ArrayList中
它是List Interface的实现类。它允许重复的对象/元素,并保持插入的顺序。你可以通过ArrayList的索引来获得ArrayList中的元素,现在你需要把它传递给getting(index)方法。你可以使用add()方法将元素添加到ArrayList中。
语法: ArrayList初始化
ArrayList<Integer> gfg=new ArrayList<>();
将一个ArrayList的元素复制到另一个ArrayList中
有两种方法,首先,你实际上只需要将一个ArrayList的引用传递给另一个,在这种情况下,如果你在一个ArrayList中的值或元素发生变化,你可以在另一个ArrayList中看到同样的变化。第二种方法是你将创建实际的重复,即如果你在一个ArrayList元素中改变,那么它将不会反映在另一个中。
方法1:使用赋值运算符(=)
在这种方法中,我们将简单地把第一个ArrayList引用分配给第二个,但是有一个重要的方面需要注意,我们没有创建一个新的对象,我们只是把第二个ArrayList指向第一个。因此,如果你在第一个ArrayList中做了改变,也会反映在第二个ArrayList中,因为你使用的是同一个对象。我们也可以改变一个ArrayList的一个值,并且可以在另一个ArrayList中寻找同样的值,无论它是否被改变。
语法:
ArrayList<Integer> gfg=new ArrayList<>();
ArrayList<Integer> gfg2=gfg;
以下是对上述问题陈述的实施。
// Java Program for copying one ArrayList to another
import java.io.*;
import java.util.ArrayList;
class GFG {
public static void main(String[] args)
{
// creation of ArrayList of Integers
ArrayList<Integer> gfg = new ArrayList<>();
// adding elements to first ArrayList
gfg.add(10);
gfg.add(21);
gfg.add(22);
gfg.add(35);
// Assigning the first reference to second
ArrayList<Integer> gfg2 = gfg;
// Iterating over second ArrayList
System.out.println(
"-----Iterating over the second ArrayList----");
for (Integer value : gfg2) {
System.out.println(value);
}
// here we changed the third element to 23
// we changed in second list and you can
// see the same change in the first Arraylist
gfg2.set(2, 23);
System.out.println("third element of first list ="
+ gfg.get(2));
System.out.println("third element of second list ="
+ gfg2.get(2));
}
}
输出
-----Iterating over the second ArrayList----
10
21
22
35
third element of first list =23
third element of second list =23
方法2:在构造函数中传递信息
在这种方法中,我们将简单地将第一个ArrayList传递给第二个ArrayList的构造函数。通过使用这种方法,如果我们改变一个ArrayList的元素/值,将不会影响另一个,所以这是我们实际创建重复的方法。我们也可以改变一个ArrayList的一个值,并且可以在另一个ArrayList中寻找同样的值,无论它是否被改变。
语法 :
ArrayList<Integer> gfg=new ArrayList<>();
ArrayList<Integer> gfg2=new ArrayList<>(gfg);
以下是对上述问题陈述的实现。
// Java Program for copying one ArrayList to another
import java.io.*;
import java.util.ArrayList;
class GFG {
public static void main(String[] args)
{
// creation of ArrayList of Integers
ArrayList<Integer> gfg = new ArrayList<>();
// adding elements to first ArrayList
gfg.add(10);
gfg.add(21);
gfg.add(22);
gfg.add(35);
// passing in the constructor
ArrayList<Integer> gfg2 = new ArrayList<>(gfg);
// Iterating over second ArrayList
System.out.println(
"-----Iterating over the second ArrayList----");
for (Integer value : gfg2) {
System.out.println(value);
}
// here we changed the third element to 23
// we changed in second list and you can
// here we will not see the same change in the first
gfg2.set(2, 23);
System.out.println("third element of first list ="
+ gfg.get(2));
System.out.println("third element of second list ="
+ gfg2.get(2));
}
}
输出
-----Iterating over the second ArrayList----
10
21
22
35
third element of first list =22
third element of second list =23
方法3:使用add()方法逐一添加
在这种方法中,我们将遍历第一个ArrayList的每个元素,并将该元素添加到第二个ArrayList中。在这里,如果你改变了第一个ArrayList的元素,那么它将不会改变第二个ArrayList的元素。我们也可以改变一个ArrayList的一个值,并且可以在另一个ArrayList中寻找相同的值,无论它是否被改变。
语法 :
ArrayList<Integer> gfg=new ArrayList<>();
ArrayList<Integer> gfg2=new ArrayList<>();
for(Integer val: gfg){
gfg2.add(val);
}
以下是对上述问题陈述的实现。
// Java Program for copying one ArrayList to another
import java.io.*;
import java.util.ArrayList;
class GFG {
public static void main(String[] args)
{
// creation of ArrayList of Integers
ArrayList<Integer> gfg = new ArrayList<>();
// adding elements to first ArrayList
gfg.add(10);
gfg.add(21);
gfg.add(22);
gfg.add(35);
ArrayList<Integer> gfg2 = new ArrayList<>();
// adding element to the second ArrayList
// by iterating over one by one
for (Integer value : gfg) {
gfg2.add(value);
}
// Iterating over second ArrayList
System.out.println(
"-----Iterating over the second ArrayList----");
for (Integer value : gfg2) {
System.out.println(value);
}
// here we changed the third element to 23
// we changed in second list
// here we will not see the same change in the first
gfg2.set(2, 23);
System.out.println("third element of first list ="
+ gfg.get(2));
System.out.println("third element of second list ="
+ gfg2.get(2));
}
}
输出
-----Iterating over the second ArrayList----
10
21
22
35
third element of first list =22
third element of second list =23
方法4:使用addAll()方法
addAll()方法是用来将一个ArrayList中的所有元素添加到另一个ArrayList中。对于这个实现,我们必须导入java.util.*.ArrayList包。
第1步:声明ArrayList 1并向其添加值。
第2步:创建另一个具有相同类型的ArrayList 2。
第3步:现在,通过使用addAll()方法,简单地将一个ArrayList的值添加到另一个ArrayList中。指定ArrayList2.addAll(ArrayList1)。
第4步:现在,打印ArrayList 2。
import java.util.*;
class GFG {
public static void main(String[] args)
{
ArrayList<String> AL1 = new ArrayList<>();
AL1.add("geeks");
AL1.add("forgeeks");
AL1.add("learning");
AL1.add("platform");
ArrayList<String> AL2 = new ArrayList<>();
AL2.addAll(AL1);
System.out.println("Original ArrayList : " + AL1);
System.out.println("Copied ArrayList : " + AL2);
}
}
输出
Original ArrayList : [geeks, forgeeks, learning, platform]
Copied ArrayList : [geeks, forgeeks, learning, platform]
方法5:使用List.copyOf()方法
List.copyOf()方法用于将一个ArrayList中的元素添加到另一个中。为了使用这个方法,我们必须导入java.util.List.*包。 .它是一个静态的工厂方法。
第1步:声明ArrayList 1并向其添加值。
第2步:创建另一个具有相同类型的ArrayList 2。
第3步:现在,通过使用List.copyOf()方法,简单地将一个ArrayList中的值添加到另一个中。在新创建的ArrayList 2的构造函数中指定List.copyOf(ArrayList1)。
第4步:现在,打印ArrayList 2。
import java.util.*;
class GFG {
public static void main(String[] args)
{
ArrayList<String> AL1 = new ArrayList<>();
AL1.add("geeks");
AL1.add("forgeeks");
AL1.add("learning");
AL1.add("platform");
ArrayList<String> AL2
= new ArrayList<>(List.copyOf(AL1));
System.out.println("Original ArrayList : " + AL1);
System.out.println("Copied Arraylist : " + AL2);
}
}
输出
Original ArrayList : [geeks, forgeeks, learning, platform]
Copied Arraylist : [geeks, forgeeks, learning, platform]
时间的复杂性 :O(N) 其中N是ArrayList的大小
辅助空间: O(N)
方法6:使用clone()方法
在java中,clone()方法被用来复制整个对象的值而不对对象产生任何副作用。
第1步:声明ArrayList 1并向其添加值。
第2步:创建另一个具有相同类型的ArrayList 2。
第3步:现在,通过使用object.clone()方法,简单地将一个ArrayList中的值添加到另一个中。在clone()方法前指定参考类型以进行类型转换。
第4步:现在,打印ArrayList 2。
/*package whatever //do not write package name here */
import java.util.*;
import java.io.*;
class GFG {
public static void main (String[] args) {
ArrayList<String> AL1 = new ArrayList<>();
AL1.add("geeks");
AL1.add("forgeeks");
AL1.add("learning");
AL1.add("platform");
ArrayList<String> AL2= new ArrayList<>();
AL2 = (ArrayList)AL1.clone();
System.out.println("Original ArrayList : " + AL1);
System.out.println("Copied Arraylist : " + AL2);
}
}
输出 :
Original ArrayList : [geeks, forgeeks, learning, platform]
Copied Arraylist : [geeks, forgeeks, learning, platform]