我有一个列表< ArrayList <字符串> >对象在Java中。内部ArrayList <字符串>具有恒定的大小。以最少内存消耗Resuse ArrayList
因此,在填充List时,我使用以下逻辑。
List<ArrayList<String>> map = new ArrayList<ArrayList<String>>();
ArrayList<String> list = new ArrayList<String>();
for(i = 0; i < 10; i++) {
....
for(j = 0; j < 10; j++) {
list.add(/* some string */);
}
map.add(list);
list.clear();
}
地图中的每个列表都填充了空值。 另外,每个回路单独实例列表,解决了我的问题,如:
List<ArrayList<String>> map = new ArrayList<ArrayList<String>>();
ArrayList<String> list = new ArrayList<String>();
for(i = 0; i < 10; i++) {
....
list = new ArrayList<String>();
for(j = 0; j < 10; j++) {
list.add(/* some string */);
}
map.add(list);
//list.clear();
}
我具有约100,000的ArrayList需要被存储在列表对象中的数据集,我不希望实例ArrayList每次,因为内存开销。
所以,除了单独实例吧,我想多了一个办法:
List<ArrayList<String>> map = new ArrayList<ArrayList<String>>();
ArrayList<String> list = new ArrayList<String>();
for(i = 0; i < 10; i++) {
....
for(j = 0; j < 10; j++) {
list.add(/* some string */);
}
map.add(new ArrayList<String>(list));
list.clear();
}
哪个这些方法会给我至少内存消耗(性能不是优先考虑)? 如果不是这些,是否有另一种方式可以更有效地完成此操作?
对不起,我没有注意到你在做'新的ArrayList(列表)' - 这不会增加更多的工作吗?然后你需要清除 –
除了如果我不这样做,添加到地图对象中的列表也被清除为空值。在清除它之前,我需要改变列表的引用,唯一的方法就是实例化它。 – Penman
所以代码块2不需要做'清除' –