==========JAVA里HashMap的问题,应该有很多人遇到过或即将遇到==========
请教大家:我有一个嵌套的HashMap      如:{key1={a=1,b=2,c=3},key2={d=1,e=2},...},我现在是要根据传过来的一对k,v值(k对应大HashMap的key,v对应小HashMap的key)来对这个嵌套的HashMap进行更新.比如现在传过来key1,a   我就把key1对应的小HashMap{a=1,b=2,c=3}拿出来放进预先定义的一个临时HashMap里.然后把a对应的出现次数,即数字1拿出来加1后再放回去,这样这个小HashMap就变为{a=2,b=2,c=3},然后我再将小HashMap   put回大HashMap里,于是大HashMap就是{key1={a=2,b=2,c=3},key2={d=1,e=2},...}了.现在的问题是那个临时的HashMap我只在程序前面定义了一次,我在每次把小HashMap   put回大HashMap后都会调用小HashMap的clear来移除所有映射关系,以便下一次的使用.现在问题是我调用完clear后,大HashMap里已经存在的小HashMap也跟着变空了.我于是就再定义一个临时的HashMap用来存放那个临时小HashMap的clone,把这个clone的HashMap   put回大HashMap里.但是还是一样,调用clone的HashMap的clear后大HashMap里已经存在的小HashMap还是跟着变空了.不知道这个问题该如何解决,请达人指点.
------解决方案--------------------		HashMap <String, HashMap>  hp = new HashMap <String, HashMap> (); 
 		HashMap <String, String>  hpP = new HashMap <String, String> (); 
 		hpP.put( "k1 ",  "1 "); 
 		hpP.put( "k2 ",  "2 "); 
 		hp.put( "k1 ", hpP); 
 		hp.put( "k2 ", hpP); 
 		hp.put( "k3 ", hpP);   
 		System.out.println(hp); 
 		Iterator i=hp.keySet().iterator(); 
 		int k=0; 
 		while(i.hasNext()){ 
 			String key = (String)i.next(); 
 			HashMap hparam=(HashMap)hp.get(key).clone(); 
 			hp.remove(hparam); 
 			hparam.put( "k1 ",k); 
 			hp.put(key,hparam); 
 			k=k+1; 
 		} 
 		System.out.println(hp);
------解决方案--------------------试一下自己重写HashMap中的clone()方法, 
 以HashMap为基类派生出自己的HashMap子类,然后重写clone()   
 看了一下HashMap中的clone是public object clone(); 
 好象HashMap本身没重载clone(),是用的object Class中默认的clone(); 
------解决方案--------------------当HashMap中insert一个key的时候,实际你是想把这个key对象产生一个copy然后再insert进一个HashMap中是吗。 
 JAVA中的都是对象的引用所以导致在外面执行了tmpkey.clear后,HashMap中的那个key也被clear了 
 ,因为它们是同一个key对象的引用。   
 由于这样的原因所以要用到clone,注意一下HashMap的Object clone();这个函数是怎么实现的。