gpt4 book ai didi

java - 需要在 HashMap 中查找对象类型值的键

转载 作者:行者123 更新时间:2023-11-30 02:11:06 25 4
gpt4 key购买 nike

我有一个HashMap<Ist, Ist> registro = new HashMap<Ist, Ist>()

我需要找到某些值的键,为此我使用我找到的方法

 public static <T, E> T getKeyByValue(Map<T, E> map, E value) {
for (Map.Entry<T, E> entry : map.entrySet()) {
if (Objects.equals(value, entry.getValue())) {
return entry.getKey();
}
}
return null;
}

我愿意registro.put(origenCopia, istOrigen)

但是getKeyByValue(this.registro, istDestino)返回 null,我猜这是因为 istDestino 和 istOrigen 不是完全相同的对象,但它们的内容是。

最佳答案

这似乎是因为您没有为您的 Ist 实现/覆盖默认的 .equals().hashCode() 方法> 类。

如果您使用 IDE 进行开发,您可以(在 99% 的情况下)自动生成它们。有关如何在 IDE 中实现此目的的快速 Google 搜索应该会有所帮助。

基本上,您需要实现这 2 个方法,以便告诉 JVM 您想要如何比较对象。这基本上意味着哪些属性必须相等。

除非您实现上述方法,否则只有当您的对象确实是同一个对象时(无论它们是否具有相同的属性),它们才是相等的。

关于java - 需要在 HashMap 中查找对象类型值的键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50099411/

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