我對我的項目感到震驚......必須保持lang數組的大散列圖....我試着用樣本但它不工作....我不能存儲數組中的鍵....在此先感謝...爲什麼我的hashmap會覆蓋上次添加的值?
class K{
int key;
}
class V{
int data;
}
class hashmp{
public static void main(String args[]){
HashMap<K,V> hm=new HashMap<K,V>();
K key1=new K();
for(int i=0;i<5;i++){
V val=new V();
key1.key=i;
val.data=i+5;
hm.put(key1,val);
}
System.out.println();
for(int i=0;i<5;i++){
key1.key=i;
V pt=hm.get(key1);
System.out.println("\n"+hm.containsKey(key1)+key1.key);
if(hm.containsKey(key1))
System.out.print(pt.data);
}
}
}
對於我得到....
true0
9
true1
9
true2
9
true3
9
true4
9
更新的代碼.....
class K{
long key;
}
class V{
long[] v=new long[10];
}
public void putHash(V val1){
//some code
V s=new V();
K gt=new K();
gt.key=val1.v[0];
if(hm.containsKey(keyArr[(int)gt.key])){
s=hm.get(gt); //get value of key if exists
//some code to modify s
}
gt.key=val1.v[0];
hm.put(gt,s); // put the modified value back to same key
}
謝謝大家給我提供的答案...最後它工作得很好...感謝大家的貢獻....
你只是'Key'類的一個實例,所以它們全部相同(equals方法的默認實現中的第一個條件是同一個對象)。在循環內移動'new Key()',一切都很順利(順便說一下,重寫map key的equals方法會更好)。 –
這足以使用** get()**方法來查找我的條目....我想檢索特定鍵的數據.... –