在做项目的过程中,经常用到ArrayList和MashMap。有时要重复用到相关的变量名(因为不想占用太多内存,所以用相同的变量名),所以经常重新new变量名。后来发现这两种类都有.clear()方法的,使用了一下,发现有时会产生不同的效果,但不确定。例如:ArrayList al=new ArrayList();
al.add("ddd");
al=new ArrayList(); //1
al.clear(); //2所以想问问,1和2这两种方式有什么不同,应该在什么不同的情况下使用?
谢谢。
al.add("ddd");
al=new ArrayList(); //1
al.clear(); //2所以想问问,1和2这两种方式有什么不同,应该在什么不同的情况下使用?
谢谢。
al.clear(); 移除此列表中的所有元素。此调用返回后,列表将为空
2,使用new新建容器如何使用上面两种方法首先考虑的不是性能或者编程习惯,而是程序逻辑,如果al只是一个局部的变量那就没什么区别了,如果它是一个静态的或者其他形式的,有可能被另外的业务共享里面的数据,而这些部分要求数据一致,那就不能重新new,而应该使用clear()方法。所以,如果你的程序使用哪种方法效果都一样,那就比较自由了。否则就必须1,或者必须2了。
按照大家说的去做就是了。
谢谢。
HashMap<String, HashMap> hm20100727=new HashMap<String, HashMap>();
HashMap<String, String> hm20100727b=new HashMap<String, String>();
hm20100727b.put("a", "1"); hm20100727b.put("b", "2");
hm20100727.put("A", hm20100727b);
System.out.println(hm20100727);
hm20100727b.clear();
hm20100727b.put("c", "3"); hm20100727b.put("d", "4");
hm20100727.put("B",hm20100727b);
System.out.println(hm20100727);
hm20100727b=new HashMap<String, String>();
hm20100727b.put("e", "5"); hm20100727b.put("f", "6");
hm20100727.put("C", hm20100727b);
System.out.println(hm20100727);
hm20100727b.clear();
hm20100727b.put("g", "7"); hm20100727b.put("h", "8");
hm20100727.put("D", hm20100727b);
System.out.println(hm20100727);
/*
* clear()之后,hm20100727b内的对象也没有了。
{A={b=2, a=1}}
{A={d=4, c=3}, B={d=4, c=3}}
{A={d=4, c=3}, B={d=4, c=3}, C={f=6, e=5}}
{D={g=7, h=8}, A={d=4, c=3}, B={d=4, c=3}, C={g=7, h=8}}
*/
}clear可不能乱用,可能甚至是最好不用的哩,否则在不知道的情况下,就会不小心删除某个对象了。
若hm20100727为静态变量,改用new不成?