我坚持以下概率。忽略大多数代码,我的问题是:每次迭代都有不同的列表x,我想在2DarrayList conVert中解析它,所以我使用conVert.add(x);但我的问题是在x.clear();.当我打印conVert之前,明确CONVERT是好的,但当我打印后清除除了X也conVert清除。我能为此做些什么?在此先感谢向2D阵列列表添加一个列表
List<Integer> x = new ArrayList<Integer>();
// List<Integer> x1 = new ArrayList<Integer>();
List<Integer> valenceList = new ArrayList<Integer>();
List<List<Integer>> conVert = new ArrayList<List<Integer>>();
for (int q = 1; q <= 4; q++) {
for (int i = 0; i < Faces.length; i++) {
for (int j = 0; j < 2; j++) {
if (Faces[i][j] == q) {
x.add(Faces[i][0]);
x.add(Faces[i][1]);
x.add(Faces[i][2]);
}
}
}
removeDuplicateWithOrder((ArrayList) x);
valenceList.add(x.size() -1);
//x1 = x;
conVert.add(x);
System.out.println(conVert);
x.clear();
//System.out.println(conVert);
}
对。你可以用'conVert.add(x.clone());'保存几个字符,尽管这意味着将'x'类型保存为'ArrayList'。 – 2011-05-04 09:14:32
@Daniel:你也需要将其转换,即'conVert.add(((ArrayList)x.clone());'。我认为将'x'的构造移动到第一个循环并移除清除会节省大多数字符:) – WhiteFang34 2011-05-04 09:20:21
废话,您可以只执行'l.getClass()。getMethod(“clone”)。invoke l);':-) – 2011-05-04 09:23:36