我有一个我想要克隆的ArrayList,因此我做了以下内容:
import java.util.ArrayList;
import java.util.Arrays;
public class Test {
public static ArrayList<ArrayList<Integer>> answer = new ArrayList<ArrayList<Integer>>();
public static ArrayList<ArrayList<Integer>> copans = new ArrayList<ArrayList<Integer>>();
public static void main(String[] args) {
ArrayList<Integer> yolo = new ArrayList<Integer>();
yolo.add(9);
yolo.add(0);
yolo.add(1);
answer.add(yolo);
appendRow();
}
static void appendRow() {
copans.addAll(answer);
copans.get(0).remove(0);
copans.get(0).remove(0);
System.out.println("ans "+answer);
}
}
Run Code Online (Sandbox Code Playgroud)
appendRow()会导致copans从之前[9,0,1]变为[1].但是,我没想到答案会变成[1],而不是[9,0,1],这根本没有意义.
我想知道我是否没有以正确的方式复制值?谢谢你的帮助!
你可能意味着:
public static ArrayList<Integer> answer = new ArrayList<Integer>();
public static ArrayList<Integer> copans = new ArrayList<Integer>();
public static void main(String[] args) {
answer.add(9);
answer.add(0);
answer.add(1);
appendRow();
}
static void appendRow() {
copans.addAll(answer);
copans.remove(0);
copans.remove(0);
System.out.println("answer: "+answer);
System.out.println("copans: "+copans);
}
Run Code Online (Sandbox Code Playgroud)
输出:
answer: [9, 0, 1]
copans: [1]
Run Code Online (Sandbox Code Playgroud)
该副本与去除元素的工作就好了.
不过你更新你的问题后,你的代码将无法编译,因为yolo arrayList是唯一可在main方法.
| 归档时间: |
|
| 查看次数: |
38 次 |
| 最近记录: |