将一个ArrayList的元素复制到另一个ArrayList中

将一个ArrayList的元素复制到另一个ArrayList中

这是List接口的实现类。它允许重复的对象/元素,并保持插入顺序。你可以通过它的索引获取ArrayList中的元素,现在你需要将它传递给getting(index)方法。你可以使用add()方法将元素添加到ArrayList中。

语法:

ArrayList<Integer> gfg=new ArrayList<>();

将一个ArrayList的元素复制到另一个ArrayList中

有两种方法,第一种方法你只需要将一个ArrayList的引用传递给另一个ArrayList,在这种情况下,如果你在一个ArrayList中的值或元素上做出改变,你会在另一个ArrayList中看到相同的改变。第二种方法是你将创建实际的副本,这意味着如果你在一个ArrayList元素中进行改变,它不会反映在另一个ArrayList中。

方法1:使用赋值运算符(=)

在这种方法中,我们只需将第一个ArrayList的引用赋给第二个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程序:将一个ArrayList复制到另外一个ArrayList
 
import java.io.*;
import java.util.ArrayList;
 
class GFG {
    public static void main(String[] args)
    {
        // 声明一个ArrayList
        ArrayList<Integer> gfg = new ArrayList<>();
 
        // 向第一个ArrayList添加元素
        gfg.add(10);
        gfg.add(21);
        gfg.add(22);
        gfg.add(35);
 
        // 在构造器中传入第一个ArrayList
        ArrayList<Integer> gfg2 = new ArrayList<>(gfg);
 
        // 遍历第二个ArrayList
        System.out.println(
            "-----遍历第二个ArrayList----");
        for (Integer value : gfg2) {
            System.out.println(value);
        }
 
        // 在这里我们改变了第三个元素为23
        // 我们在第二个列表中进行修改,而你不会在第一个列表中看到相同的修改
        gfg2.set(2, 23);
 
        System.out.println("第一个列表的第三个元素 ="
                           + gfg.get(2));
        System.out.println("第二个列表的第三个元素 ="
                           + gfg2.get(2));
    }
}

输出

-----遍历第二个ArrayList----
10
21
22
35
第一个列表的第三个元素 =22
第二个列表的第三个元素 =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程序:将一个ArrayList复制到另外一个ArrayList
 
import java.io.*;
import java.util.ArrayList;
 
class GFG {
    public static void main(String[] args)
    {
        // 声明一个ArrayList
        ArrayList<Integer> gfg = new ArrayList<>();
 
        // 向第一个ArrayList添加元素
        gfg.add(10);
        gfg.add(21);
        gfg.add(22);
        gfg.add(35);
 
        ArrayList<Integer> gfg2 = new ArrayList<>();
 
        // 一个一个添加元素到第二个ArrayList中
        for (Integer value : gfg) {
            gfg2.add(value);
        }
 
        // 遍历第二个ArrayList
        System.out.println(
            "-----遍历第二个ArrayList----");
 
        for (Integer value : gfg2) {
            System.out.println(value);
        }
 
        // 在这里我们改变了第三个元素为23
        // 我们在第二个列表中进行修改
        // 在这里你不会在第一个列表中看到相同的修改
        gfg2.set(2, 23);
 
        System.out.println("第一个列表的第三个元素 ="
                           + gfg.get(2));
        System.out.println("第二个列表的第三个元素 ="
                           + gfg2.get(2));
    }
}

输出

-----遍历第二个ArrayList----
10
21
22
35
第一个列表的第三个元素 =22
第二个列表的第三个元素 =23

方法4:使用addAll()方法

使用addAll()方法将一个ArrayList中的所有元素添加到另一个ArrayList中。对于这个实现,我们必须导入的包是 java.util.*。

步骤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的元素添加到另一个ArrayList中。要使用此方法,我们必须导入包 **java.util.List.*** 或 **java.util.*** 。这是一个静态工厂方法。

步骤1:声明ArrayList 1并向其添加值。

步骤2:创建另一个相同类型的ArrayList 2。

第3步:现在,只需要使用List.copyOf()方法将一个ArrayList中的值添加到另一个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:现在,只需使用方法.clone()将一个ArrayList中的值添加到另一个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]

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程