gpt4 book ai didi

java - HashMap.containsKey() - 如何搜索类?

转载 作者:搜寻专家 更新时间:2023-10-31 19:58:09 25 4
gpt4 key购买 nike

你好
如果您搜索 HashMap<String,String>对于键值对的特定值,您可以编写以下内容:

myHashMap.containsKey(myString);

但如果键不是字符串,我该如何管理呢?我有一个看起来像这样的类:

public class Kategorie implements Comparable {
private String name;

public Kategorie() {
super();
}

public Kategorie(String name) {
setName(name);
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

@Override
public int compareTo(Object o) {
if (!(o instanceof Kategorie))
throw new ClassCastException();

Kategorie k = (Kategorie)o;
String name = k.getName();
return this.getName().compareTo(name);

}
}

在 map 中,我保存了这种“类别”类型的键和值。

mapKategorieDEundEN.put(new Kategorie(strName_de), new Kategorie(strName_en));

在代码的后面,我想检查是否有带有特定字符串的键。

if (mapKategorieDEundEN.containsKey(searchString))  {

...不起作用,因为键不是字符串而是“类别”,这很清楚。

然后我尝试了这样的事情:

if (mapKategorieDEundEN.containsKey(new Kategorie(searchString)))  {

...也行不通。我假设它没有找到任何东西,因为该对象不是“原始”对象而是一个新对象。

在这种情况下,我可以完全使用 containsKey 还是必须对 HashMap 使用循环?

最佳答案

你的类应该覆盖 equalshashCode , 之后它会起作用。

HashMap/Hashtable 通过使用键的 hashCode 将项目放入“桶”中,因此表示与另一个对象具有相同值且应被视为同一对象的新对象必须返回相同的 hashCode。所有返回相同 hashCode 的键都将被视为候选者,并且将对它们调用 equals。如果 equals 返回 true,则认为匹配。

关于java - HashMap.containsKey() - 如何搜索类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6249156/

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