【发布时间】:2012-01-18 21:52:47
【问题描述】:
我只是想知道是否可以在 java 中创建 <key, hash table> 形式的哈希表。
基本上第一个键将我引导到一个新的哈希表;然后我使用另一个键搜索该表。
【问题讨论】:
我只是想知道是否可以在 java 中创建 <key, hash table> 形式的哈希表。
基本上第一个键将我引导到一个新的哈希表;然后我使用另一个键搜索该表。
【问题讨论】:
没错:
Map<K1, Map<K2, V>> themap = new HashMap<K1, Map<K2, V>>();
其中K1是“哈希表”的key,K2和V是内部“哈希表”的key和value类型。
编辑:正如@AndreiBodnarescu 正确指出的那样,您还必须仔细选择您的Map 实现(Map 是一个接口)。问自己以下问题:
Hashtable 或Collections.synchronizedMap(...);LinkedHashMap;TreeMap。仔细选择你的实现!
【讨论】:
你可以使用
Hashtable<KeyType,Hashtable<InnerKeyType,InnerValueType>> ht = new Hashtable<>();
显然 InnerValueType 仍然可以是 Hashtable
如果你的数据结构没有被多个线程访问,你可以用 HashMap 替换 Hashtable,它具有哈希表结构的所有行为,但没有同步。
【讨论】:
当然可以。您应该使用HashMap,而不是Hashtable(因为Hashtable 是一个遗留集合类,自Java 1.2 以来已被HashMap 取代)。
例子:
Map<String, Map<String, Object>> mapOfMaps = new HashMap<String, Map<String, Object>>();
mapOfMaps.put("one", new HashMap<String, Object>());
mapOfMaps.put("two", new HashMap<String, Object>());
【讨论】:
试试
Hashtable<Integer, Hashtable> hashTable = new Hashtable<Integer, Hashtable>():
【讨论】: