代码如下:
Hashtable ht=new Hashtable();
Vector v=new Vector();
v.addElement("abc");
v.addElement("def");
ht.put("a",v);
System.out.println(ht.get("a"));
v.clear();
v=null;
System.out.println(ht.get("a"));问题是当我把Vector清空以后,第二次调用System.out.println()语句时,就会打印[]空数据出来.我觉得这个与java里的引起传递有关,但我找不到好的解决方法,请大家帮帮帮忙.
Hashtable ht=new Hashtable();
Vector v=new Vector();
v.addElement("abc");
v.addElement("def");
ht.put("a",v);
System.out.println(ht.get("a"));
v.clear();
v=null;
System.out.println(ht.get("a"));问题是当我把Vector清空以后,第二次调用System.out.println()语句时,就会打印[]空数据出来.我觉得这个与java里的引起传递有关,但我找不到好的解决方法,请大家帮帮帮忙.
v=null;
ht.put()的时候,已经把对象放进去了了, v.clear()就把v中的数据清空了,v = null 只是说v这个变量不再指向那个对象,但对象本身还存在,还可以通过 ht.get("a")得到的你可以在第一个sysout之前ht.put之后,加上一 句,v.add("sdf");,第一次打出来的将有三个元素
Vector v=new Vector();
v.addElement("abc");
v.addElement("def");
Vector temp_v = (Vector)v.clone();
ht.put("a",temp_v);
System.out.println(ht.get("a"));
v.clear();
v=null;
System.out.println(ht.get("a"));
你直接v =null;而不v.clear()就有内容了