当前位置: 首页 > 知识库问答 >
问题:

HashMap和int作为键

施冠玉
2023-03-14
HashMap<int, myObject> myMap = new HashMap<int, myObject>();

共有1个答案

乔宏峻
2023-03-14

不能使用原语,因为HashMap在内部为键使用object。所以只能使用从object继承的object(即任何object)。

这是HashMap中的函数put(),正如您所看到的,它使用Object for k:

public V put(K key, V value) {
    if (key == null)
        return putForNullKey(value);
    int hash = hash(key);
    int i = indexFor(hash, table.length);
    for (Entry<K,V> e = table[i]; e != null; e = e.next) {
        Object k;
        if (e.hash == hash && ((k = e.key) == key || key.equals(k))) {
            V oldValue = e.value;
            e.value = value;
            e.recordAccess(this);
            return oldValue;
        }
    }

    modCount++;
    addEntry(hash, key, value, i);
    return null;
}

“K=E.Key”这一表述应该能说明这一点。

 类似资料:
  • 我有一个HashMap和一个包含键/值的属性文件。属性文件以这种格式存储键/值“4,5=2”我构建了一个从文件加载属性的方法,它将这对“键/值”放入一个HashMap数组(字符串、整数)中。但我的问题是,我希望键的每个元素都存储为int形式,以便将它们用作另一个方法的参数。键存储为字符串。如有任何帮助,我们将不胜感激。谢谢你!

  • 问题内容: 在Java中,当我使用以下命令时: 我收到与不当类型相关的错误。我通过分别使用Character和Integer而不是char和int解决了我的问题。但是,我很难弄清楚为什么HashMap无法处理原始数据类型。 问题答案: 通用参数只能绑定到引用类型,而不能绑定到原始类型,因此您需要使用相应的包装器类型。试试吧。 但是,我很难弄清楚为什么HashMap无法处理原始数据类型。 这是由于类

  • 问题内容: 我试图理解为什么当用作Hashmap密钥时,将String和Stringbuilder / StringBuffer区别对待。让我通过以下插图使我的困惑更加清楚: 示例1,使用String: 上面的代码片段打印为“ 1”。 Example#2,使用StringBuilder(或StringBuffer): 上面的代码片段打印为“ 2”。 任何人都可以解释一下行为差异的原因。 问题答案:

  • 问题内容: 有人可以向我解释静态HashMap#hash(int)方法吗? 产生均匀分布的哈希的背后的理由是什么? 一个例子将使它更容易消化。 澄清 我知道运算符,真值表和按位运算。我只是无法真正解码实现,也无法真正评论。甚至是背后的原因。 问题答案: 是逻辑右移(无符号扩展)(JLS 15.19 Shift Operators ),并且是按位异或(JLS 15.22.1 Integer Bitw

  • 问题内容: 我正在使用此代码来检查数组是否存在: 但这印出来。如何检查数组中是否存在? 问题答案: 问题是因为两者不相等。 和其他Java Collections Framework类根据定义了其接口。来自: Collections Framework接口中的许多方法都是根据方法定义的。例如,该方法的规范说:“ 当且仅当此映射包含诸如这样的键的映射时,才返回。” 注意,它们不必是同一对象。他们一定