的整數鍵我試圖創建一個哈希表如下所示:哈希表在Java
Hashtable<int, ArrayList<byte>> block = new Hashtable<int, ArrayList<byte>>();
但我在兩個int和「此令牌後有望尺寸」字節說法得到一個錯誤。
如果我使用類似:
Hashtable<String, byte[]>
- 一切都很好。有人能解釋爲什麼嗎?
謝謝。
的整數鍵我試圖創建一個哈希表如下所示:哈希表在Java
Hashtable<int, ArrayList<byte>> block = new Hashtable<int, ArrayList<byte>>();
但我在兩個int和「此令牌後有望尺寸」字節說法得到一個錯誤。
如果我使用類似:
Hashtable<String, byte[]>
- 一切都很好。有人能解釋爲什麼嗎?
謝謝。
在Java的核心集合類中,只能存儲引用類型(擴展java.lang.Object的東西)。您不能存儲原語,如int
和byte
。請注意,像byte[]
這樣的數組不是原始的,而且也是引用類型。
正如@Giuseppe提到的,你可以這樣定義它:
Hashtable<Integer, ArrayList<Byte>> table = new Hashtable<Integer, ArrayList<Byte>>();
,然後把原始int
的在它的鍵:
table.put(4, ...);
因爲自從Java 1.5,autoboxing會自動將原始的int
更改爲幕後的Integer
(包裝器)。
如果你需要更多的速度(並測量包裝集合類是問題!),你可以使用第三方庫,可以在其集合中存儲基元。這種庫的一個例子是Trove和Colt。
Java泛型不能用原始類型實例化。嘗試使用包裝類來代替:
Hashtable<Integer, ArrayList<Byte>> block = new Hashtable<Integer, ArrayList<Byte>>();
你可以用它代替INT整數,如果你使用的是Java 1.5+拳擊/拆箱功能與它一起工作時,將讓您的生活更輕鬆。
Hashtable<Integer,byte[]> block = new Hashtable<Integer,byte[]>();