gpt4 book ai didi

java - 为什么我的 HashMap.get 即使在输入正确的键、值后仍返回空值?

转载 作者:行者123 更新时间:2023-12-01 09:39:52 24 4
gpt4 key购买 nike

我试图从 HashMap 中检索一些值,在返回值之前,我检查该键是否存在于映射中,并且此检查总是失败,从而导致空值。我也重写了哈希代码和 equals 方法。有人可以告诉我我在这里做错了什么吗?

类字段:

 private static final List<String> DZ=new ArrayList<String>();
private static final Map<Participant,List<String>> subDz=new HashMap<Participant,List<String>>();

我放入 map 的方法:

    public static synchronized void handleSubs(String[] subData,String    dz){
int[] lowdims=new int[subData.length];
int[] highdims=new int[subData.length];
try {
for (int i=1;i<subData.length;i++){
if (!subData[i].equals("") && !subData[i].equals("\n")){
if (i%2==0){
highdims[i]=Integer.parseInt(subData[i].trim());
}
else {
lowdims[i]=Integer.parseInt(subData[i].trim());
}
}
}
if (!DZ.isEmpty()){
DZ.clear();
}
DZ.add(dz);
allSubDZs.add(dz);
int[] newlow=removeZeroes(lowdims);
int[] newhigh=removeZeroes(highdims);
allSubs.add(new Participant(newlow,newhigh));
subDz.put(new Participant(newlow,newhigh),DZ );
}

我检索值的方法:

   public static List<String> getSubDz(Participant sub){
if (subDz.containsKey(sub)){
return subDz.get(sub);
}
else{
logger.info("Subscription DZ not available");
return null;
}
}

即使我将 key 放入其中,getSubDz 中的 if 检查总是失败。

hashCode 和 equals 方法:

   @Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((DZ == null) ? 0 : DZ.hashCode());
return result;
}
@Override
public boolean equals(final Object obj) {
if (this == obj) {
return true;
}
if (obj == null) {
return false;
}
if (this.getClass() != obj.getClass()) {
return false;
}
final SubscriptionHandler other=(SubscriptionHandler)obj;
if (DZ == null) {
if (other.DZ != null) {
return false;
}
} else if (!DZ.equals(other.DZ)) {
return false;
}
return true;

最佳答案

您需要键类上的 equals 和 hashcode。这将是您案例中的类(class)参与者。

关于java - 为什么我的 HashMap.get 即使在输入正确的键、值后仍返回空值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38545785/

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