【问题标题】:Search Hashmap with Integer[] as a key [duplicate]以 Integer[] 为键搜索 Hashmap [重复]
【发布时间】:2019-08-11 03:41:21
【问题描述】:

假设我有一个Hashmap,我希望两个Integers 的数组实际上是每个值的键。我不知道如何取回正确的值。它应该已经存储在Hashmap

public class Mapky {
    public static void main(String[] args) {
        HashMap<Integer[], String> mapka = new HashMap<>();
        mapka.put(new Integer[]{10,23}, "Hello");
        System.out.println(mapka.get(new Integer[]{10,23}));
    }
}

还有为什么会这样

System.out.println(new Integer[]{10,23}.equals(new Integer[]{10,23}));

返回false?

【问题讨论】:

  • 你不能。数组永远只等于它们自己。使用 hashCode 和 equals() 创建一个适当的类。或者至少,使用 List。一般避免使用数组。

标签: java hashmap


【解决方案1】:

您必须提供对密钥的引用。
如果您创建一个new Integer[]{10, 23},您将创建一个不同的,它具有相同的值但不是键。
这样做:

public static void main(String[] args) {
    Map<Integer[], String> mapka = new HashMap<>();
    Integer[] key = new Integer[]{10, 23};
    mapka.put(key, "Hello");
    System.out.println(mapka.get(key));
}

【讨论】:

  • 我什至无法回答,因为我在打字时有人将其标记为重复。我的回答更普遍适用,类似于“重复”问题上的Genzer's answer
猜你喜欢
  • 2013-05-15
  • 2020-11-30
  • 1970-01-01
  • 2011-07-10
  • 1970-01-01
  • 2016-05-13
  • 2018-08-08
  • 1970-01-01
  • 2011-10-30
相关资源
最近更新 更多