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

Java中带有整数键的哈希表

周通
2023-03-14
问题内容

我正在尝试创建一个哈希表,如下所示:

Hashtable<int, ArrayList<byte>> block = new Hashtable<int, ArrayList<byte>>();

但是我在int和byte上都收到一个错误,说“此令牌后应有尺寸”。

如果我使用类似:

Hashtable<String, byte[]>- 一切都很好。有人可以解释为什么吗?

谢谢。


问题答案:

在Java的核心集合类中,您只能存储引用类型(扩展java.lang.Object的对象)。您 不能
存储诸如int和的基元byte。请注意,like数组byte[]不是原始数组,而是引用类型。

如@Giuseppe所述,您可以这样定义它:

Hashtable<Integer, ArrayList<Byte>> table = new Hashtable<Integer, ArrayList<Byte>>();

然后将primitive int的作为键:

table.put(4, ...);

因为从Java
1.5开始,自动装箱将自动将原语更改为幕后intInteger(包装器)。

如果您需要更快的速度(并且测量包装器集合类是问题!),则可以使用第3方库,该库可以在其集合中存储基元。Trove和Colt是此类库的示例



 类似资料:
  • 问题内容: 我不知道这是否可行,但我正在尝试制作一个Hashtable,其中Interval是一个具有2个整数/长值,一个起点和一个终点的类,我想做这样的事情: 因此,基本上我想要的是Interval对象中一系列值之间的键提供对应的WhateverObject。我知道我必须重写interval对象中的equals()和hashcode(),主要问题是我想以某种方式使100到200之间的所有值(在此

  • 问题内容: 基本类型(例如int)的哈希码是什么? 例如,假设num是一个整数。 问题答案: 对于一个最自然的选择是使用本身。一个更好的问题是,用什么的的,因为它不适合的尺度的哈希码。您的最佳解决方案以及所有相关问题将是有效的Java。

  • 问题内容: 每当我想用jQuery将JSON对象数组发布到Rails时,都会遇到这个问题。如果我对数组进行字符串化,我可以看到jQuery在正确执行其工作: 但是,如果我只是将数组作为AJAX调用的数据发送,则会得到: 而如果我只是发送一个简单的数组,它将起作用: Rails为什么将数组更改为该奇怪的哈希?想到的唯一原因是,Rails无法正确理解内容,因为这里没有类型(是否可以在jQuery调用中

  • 问题内容: 我只是在阅读有关Java中HashMap和HashTable类之间的区别。在那里,我发现了一个区别,即前者允许空键,而后者则没有特权。就HashMap的工作而言,我知道,它在键上调用hashcode方法,以查找要在其中放置该键值对的存储桶。我的问题来了:如何计算空值的哈希码?或者空键的哈希码是否有任何默认值(如果需要,请指定该值)? 问题答案: 从HashMap: 如果进一步看,您会发

  • 我用java实现了一个类来模拟有理数,它有两个整数来模拟分子和分母。我需要覆盖Object的hashcode方法,所以相同的数字有相同的hash代码。 我已经这样定义了equals()方法: 关于此: 返回分子*分母是个好方法吗? 等价的有理数(如1/4和2/8)是否应该返回相同的哈希码?

  • 我正在开发一款Android应用程序。在我的应用程序中,我集成了Facebook登录。我的facebook登录工作正常。但当我制作release apk并运行该应用程序并尝试登录Facebook时,它就不工作了。请看下面我的场景。 我生成如下的发布apk 然后我使用jks文件路径生成keyhash。 我得到了一个散列键,然后将其添加到开发人员配置文件设置中。 当我在我的设备上安装并运行apk并使用