复制arraylist

Geo*_*iuc -3 java arraylist

我认为这样做arraylist1=arraylist2可以使其中的2个共享相同的内存.如果没有他们这样做,我怎么能复制一个arraylist?我想把它们分开对待.

 List<Integer> rez = new ArrayList<>();
 List<Integer> rezc = new ArrayList<>();

        rez.add(1);
        rezc=rez;
         rezc.add(2);
        for (int s : rez) {
                System.out.print(s + " ");
            }//this will print 1 2
Run Code Online (Sandbox Code Playgroud)

T.J*_*der 5

我认为做arraylist1 = arraylist2使得其中2个共享相同的内存.

不完全是,它使这两个引用引用相同的单个对象.

如果没有他们这样做,我怎么能复制一个arraylist?

很多选择:

  1. ArrayList有一个复制构造函数:

    List<Integer> rezc = new ArrayList<>(rez);
    
    Run Code Online (Sandbox Code Playgroud)
  2. List有一个addAll方法:

    List<Integer> rezc = new ArrayList<>();
    rezc.addAll(rez);
    
    Run Code Online (Sandbox Code Playgroud)
  3. ArrayList有一个clone方法,但是如果rez被声明为a则使用它有点难看,List因为你必须假设它是一个ArrayList并抛出它,这可能不是一个好主意:

    List<Integer> rezc = (List<Integer>)((ArrayList<Integer>)rez).clone();
    
    Run Code Online (Sandbox Code Playgroud)

在尝试计算这样的事情时,通过JavaDoc阅读是非常值得的.