我认为这样做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)
我认为做arraylist1 = arraylist2使得其中2个共享相同的内存.
不完全是,它使这两个引用都引用相同的单个对象.
如果没有他们这样做,我怎么能复制一个arraylist?
很多选择:
ArrayList有一个复制构造函数:
List<Integer> rezc = new ArrayList<>(rez);
Run Code Online (Sandbox Code Playgroud)List有一个addAll方法:
List<Integer> rezc = new ArrayList<>();
rezc.addAll(rez);
Run Code Online (Sandbox Code Playgroud)ArrayList有一个clone方法,但是如果rez被声明为a则使用它有点难看,List因为你必须假设它是一个ArrayList并抛出它,这可能不是一个好主意:
List<Integer> rezc = (List<Integer>)((ArrayList<Integer>)rez).clone();
Run Code Online (Sandbox Code Playgroud)在尝试计算这样的事情时,通过JavaDoc阅读是非常值得的.
| 归档时间: |
|
| 查看次数: |
115 次 |
| 最近记录: |