2012-01-18 163 views

回答

10

當然它是:

Map<K1, Map<K2, V>> themap = new HashMap<K1, Map<K2, V>>(); 

其中K1是「哈希表」的鍵,和K2V是內部的「哈希表」的鍵和值的類型。

編輯:作爲@AndreiBodnarescu正確地指出,還必須仔細選擇你的Map實現(Map是一個接口)。問自己以下問題:

  • 是外部/內部映射所需的多線程訪問?如果是,請考慮HashtableCollections.synchronizedMap(...);
  • 插入順序是否重要?如果是,請考慮LinkedHashMap;
  • 你想把鑰匙分類嗎?如果是,請考慮TreeMap

請仔細選擇您的實施!

2

可以使用

Hashtable<KeyType,Hashtable<InnerKeyType,InnerValueType>> ht = new Hashtable<>(); 

其中obviouslly的InnerValueType仍然是一個哈希表

如果你的數據結構不被多個線程訪問,您可以repalce的Hashtable與HashMap中擁有的所有行爲一個哈希表結構,但沒有同步。

+0

1爲表/圖的區別 – 2012-01-18 13:44:26

0

嘗試

Hashtable<Integer, Hashtable> hashTable = new Hashtable<Integer, Hashtable>(): 
1

Ofcourse這是可能的。您應該使用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>());