gpt4 book ai didi

java - 为什么我的 HashMap 会被最后添加的值覆盖?

转载 作者:行者123 更新时间:2023-12-01 13:29:21 24 4
gpt4 key购买 nike

我对我的项目感到震惊...必须维护 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
}

谢谢大家给我提供答案...终于运行良好...感谢大家的贡献...

最佳答案

HashMap 存储您的 key 的引用。因此,如果您更改键,它在 HashMap 中也会发生更改。如果您希望对此进行更改,请将语句 K key1=new K(); 移至 for 循环内。

关于java - 为什么我的 HashMap 会被最后添加的值覆盖?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21656023/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com