我有一个Map作为语法Map<String, String> testMap = new HashMap<String, String>();
.在此地图中可以有1000个数据.
当我的应用程序需要新的数据列表时,我必须清除Map.但是当我看到Map.clear()的代码为
/**
* Removes all of the mappings from this map.
* The map will be empty after this call returns.
*/
public void clear() {
modCount++;
Entry[] tab = table;
for (int i = 0; i < tab.length; i++)
tab[i] = null;
size = 0;
}
Run Code Online (Sandbox Code Playgroud)
我意识到clear方法循环n次(其中n是Map中的数据).所以我认为可以有一种方法来重新定义Map,因为testMap = new HashMap<String, String>();
之前使用的Map将是Garbage收集的.
但我不确定这将是一个好方法.我正在研究移动应用程序.
你能指导我吗?
清空集合(在我的情况下是一个ArrayList)与创建一个新集合(并让垃圾收集器清除旧集合)的优点和缺点是什么.
具体来说,我有一个ArrayList<Rectangle>
叫list
.当某种情况发生时,我需要清空list
并用其他内容重新填充.我是应该打电话list.clear()
还是只是制作一个新的ArrayList<Rectangle>
并让旧的垃圾收集?每种方法的优缺点是什么?
在我的业务逻辑中,我想用另一个列表完全替换一个列表.
以下方法是否正确?
public class TestListReplacement {
public static void main(String[] args) {
List<String> values= new ArrayList<String>();
values.add("a");
values.add("b");
values.add("c");
values.add("d");
values.add("e");
values.add("f");
List<String> valuesNew= new ArrayList<String>();
valuesNew.add("g");
valuesNew.add("h");
valuesNew.add("i");
valuesNew.add("j");
valuesNew.add("k");
values= valuesNew;
for(String val:values){
System.out.println(val);
}
}
}
Run Code Online (Sandbox Code Playgroud)
这似乎工作正常,但我想知道,在某些用例中,它可能无法正常工作.
如果我有类似的东西:
ArrayList<Data> mList = new ArrayList();
...
public void setList(ArrayList<Data> list) {
mList = list;
}
public void updateList(ArrayList<Data> list) {
mList.clear();
mList.addAll(list);
}
Run Code Online (Sandbox Code Playgroud)
哪个更有效,setList()
或者updateList()
为什么?什么是最佳做法?
编辑:
不要混淆这个问题.