我米试图通过价值 发送一个二维的ArrayList所以我写了下面的代码发送二维的ArrayList通过价值
public static void main(String[] args) {
ArrayList<List<Object>> a = new ArrayList<List<Object>>();
for (int i = 0; i < 10; i++) {
List in_a = Arrays.asList("aa","bb","cc","dd");
a.add(in_a);
}
// THE FOLLOWING WOULD WORK IN A 1D ARRAY, BUT NOT 2D
// ArrayList<List<Object>> b = new ArrayList < List<Object> > (a);
// THIS IS MY WORKING SOLUTION
ArrayList < List<Object> > b = new ArrayList < List<Object> >() ;
for (int i = 0; i < a.size(); i++) {
List in_b = new ArrayList(a.get(i));
b.add(in_b);
}
b.get(1).set(3, "33");
System.out.println("a.get(1).get(3) = " + a.get(1).get(3));
System.out.println("b.get(1).get(3) = " + b.get(1).get(3));
}
不过,我不喜欢这样的解决方案
有没有更好的办法来解决这个问题?
您是否需要浅层或深层复制以及在什么层次?你知道如果一个[i] [j]是可变的,即使你的工作解决方案b [i] [j]仍然是对[i] [j]的引用,所以如果修改[i] [j] ,b [i] [j]会反映修改吗? –