java - 复制数组列表

Tim*_*Tim 4 java arraylist deep-copy

所以我知道下面的方法会导致两个变量都指向同一个对象,但如果我确实想找到最简单的方法让ArrayList s2与s1完全相同,我该怎么办呢?

public static void main(String[] args) {

        ArrayList<String> s1 = new ArrayList<String>();
        for (int i = 1; i <= 3; i++) {
            s1.add(""+i);
        }
        ArrayList<String> s2 = s1;

    }
Run Code Online (Sandbox Code Playgroud)

Lui*_*oza 5

您应该使用s1作为参数创建s2.

public static void main(String[] args) {

    ArrayList<String> s1 = new ArrayList<String>();
    for (int i = 1; i <= 3; i++) {
        s1.add(""+i);
    }
    ArrayList<String> s2 = new ArrayList<String>(s1);

}
Run Code Online (Sandbox Code Playgroud)

  • 值得一提的是,虽然你现在有两个**不同**列表的引用,但这些列表中的引用**是相同的**,因此对存储在一个中的对象的更改将影响另一个.使用字符串时不是问题(因为它们是不可变的),但在处理其他类型的对象列表时要记住这一点. (2认同)