我有一个我想要克隆的ArrayList,因此我做了以下内容:
import java.util.ArrayList; import java.util.Arrays; public class Test { public static ArrayList> answer = new ArrayList >(); public static ArrayList > copans = new ArrayList >(); public static void main(String[] args) { ArrayList yolo = new ArrayList (); 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); } }
appendRow()会导致copans从之前[9,0,1]变为[1].但是,我没想到答案会变成[1],而不是[9,0,1],这根本没有意义.
我想知道我是否没有以正确的方式复制值?谢谢你的帮助!
你可能意味着:
public static ArrayListanswer = new ArrayList (); public static ArrayList copans = new ArrayList (); 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); }
输出:
answer: [9, 0, 1] copans: [1]
该副本与去除元素的工作就好了.
不过你更新你的问题后,你的代码将无法编译,因为yolo
arrayList
是唯一可在main
方法.