我有一个2d arraylist并且在一个循环中我想要将2d列表的每个1d列表解析为临时列表。另外,我希望在每次迭代结束时我都要清除这个临时列表,以便下一步解析我的初始2d的i-est列表。
代码如下:
List<List<Integer>> conVert = new ArrayList<List<Integer>>();
List<Integer> temp = new ArrayList<Integer>();
for (int i = 0; i<conVert.size(); i++){
temp.addAll(conVert.get(i));
Collections.sort(temp);
System.out.println(temp);
for(int j = 0; j<temp.size(); j++){
// several commands
}
temp.clear();
}
我有几个命令功能不好,因为temp没有正确清除。任何的想法?当我在开始时明确表示我遇到conVert问题时,
答案 0 :(得分:0)
您可以使用全新的List
而不是清除“旧”的List
。为什么在for-loop之后需要一个空的List
?重用这些基本数据结构无法获得任何好处,甚至可能产生相反的效果。
当您的 List<List<Integer>> conVert = new ArrayList<List<Integer>>();
for (int i = 0; i<conVert.size(); i++){
List<Integer> temp = new ArrayList<Integer>();
temp.addAll(conVert.get(i));
Collections.sort(temp);
System.out.println(temp);
for(int j = 0; j<temp.size(); j++){
// several commands
}
}
超出范围时,它将以几乎免费的方式进行垃圾收集,而明确清空它则需要一些资源。
编辑:我想在这种情况下最好让代码说明一下:
{{1}}