Java中使用整数键的散列表

12

我正在尝试创建一个Hashtable,如下所示:

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

但是我在 int 和 byte 上都遇到了"此标记后面应有维度"的错误。

如果我使用以下语法:

Hashtable<String, byte[]> - 一切正常。请问有人能解释下为什么吗?

谢谢。

3个回答

28

在Java的基础集合类中,你只能存储引用类型(继承自java.lang.Object的东西)。你不能存储原始类型,比如intbyte。需要注意的是,像byte[]这样的数组不是原始类型,而是引用类型。

正如@Giuseppe所提到的那样,你可以这样定义它:

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

然后将基本数据类型int放入其中作为键:

table.put(4, ...);

因为从Java 1.5开始,自动装箱会在幕后自动将基本类型的int转换为一个包装类Integer

如果你需要更快的速度(而且已经确认包装类集合是问题所在),你可以使用第三方库来存储基本类型。这样的库包括TroveColt


0

Java泛型不能使用原始类型进行实例化。请尝试使用包装类:

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

0

在编程中,你可以使用Integer而不是int,如果你使用的是Java 1.5+,那么装箱/拆箱功能会让你更轻松地处理它。

Hashtable<Integer,byte[]> block = new Hashtable<Integer,byte[]>();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接