当前位置: 首页 > 面试题库 >

HashMap和int作为键

何志业
2023-03-14
问题内容

我试图建立一个HashMap,它将具有整数作为键和对象作为值。

我的语法是:

HashMap<int, myObject> myMap = new HashMap<int, myObject>();

但是,返回的错误是-令牌“ int”的语法错误,此令牌后应包含尺寸-我不明白为什么应该添加尺寸(即:将int制成数组),因为我只需要存储一个数字作为关键。

我能做什么?

提前致谢!:)


问题答案:

您不能使用基元,因为HashMap在内部将对象用作键。因此,您只能使用从Object继承的对象(即任何对象)。

这就是HashMap中的put()函数,如您所见,它对K使用Object:

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,它将具有整数作为键和对象作为值。 我的语法是: 但是,返回的错误是-令牌“ int”的语法错误,此令牌后应包含尺寸-我不明白为什么应该添加尺寸(即:将int制成数组),因为我只需要存储一个数字作为关键。 我能做什么? 提前致谢!:) 问题答案: 您不能使用基元,因为HashMap在内部将对象用作键。因此,您只能使用从Object继承的对象(即任何对象)。

  • 我有一个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接口中的许多方法都是根据方法定义的。例如,该方法的规范说:“ 当且仅当此映射包含诸如这样的键的映射时,才返回。” 注意,它们不必是同一对象。他们一定