Java 把一个ArrayList的元素复制到另一个ArrayList中

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]

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程