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

标签 java

我有一个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/

相关文章:

Java 测试 : Massively generate mock objects by running your code

java - 空对象引用上的“java.lang.String org.jsoup.nodes.Element.text()”

java - Zulu 与 Java 11 和 JavaFX Docker 镜像

java - 测试时如何将模拟对象注入(inject)类?

java - 字符串到 HH :mm:ss time and finding the difference between 2 times

java - 实例方法中的内部类

java - charAt() 和 Math.pow()

java - 保存图像时添加 toast Eclipse

java - 如何配置项目以将 JSON 提供程序与 jersey-restful web 服务一起使用

java - 获取错误 java.lang.ArrayIndexOutOfBoundsException : too much data for RSA block