我堅持以下概率。忽略大多數代碼,我的問題是:每次迭代都有不同的列表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