2015-06-18 41 views
-2

我有一個地圖,其中鍵是值的列表,並匹配到一個值,如下所示基本上我想創建一個地圖,其中值將再次將地圖類型嵌套的地圖在地圖的價值是在另一個地圖的地圖

key   value 
Deaswe  DealDate 
TradeRe  TradeRef 
Daelet  DealDate 
TF   TradeRef 
下面

是代碼以實現在最終在其中數據地圖我們終於存儲元件如下所示

Map<String, List<String>> dataMap = new HashMap<String, List<String>>(); 
     dataMap.put ("TradeRef", Arrays.asList("TradeRe","TF")); 
     dataMap.put ("DealDate", Arrays.asList("Daelet", "Deaswe")); 


     Map<String, String> itemMap = new HashMap<String, String>(); //New map for item->key mapping 
     for(String key: dataMap.keySet()) //Get all keys and iterate through 
      for(String item: dataMap.get(key)) //For each item in your value list 
       itemMap.put(item, key); //Create new mapping item->key 

現在上述地圖工作正常,但我有修改此因爲我想要另一張地圖,其中會有關鍵字,而且它的價值將是前所未有的已經型地圖,這樣它會像

Map<String, Map<String, String>> 
換句話說

上述數據圖將是地圖

值類型,這樣的結構將是像

key   Value 

B4 -----> dataMap   

B5 ----> dataMap 

和數據地圖有它自己的鍵和值 所以它會像

B4 --> Deaswe --> DealDate 
    B4 ---> Daelet --> DealDate 
    B5 ---> TradeRe --> TradeRef 
    B5 ---> TF --> TradeRef 

人請指教我們如何創建這個數據結構,其中將會有一個值類型的地圖將再次是類型映射,我們如何插入和迭代它夥計請告知 在此

+0

爲什麼不創建一個對象而不是地圖的地圖?您將擁有像Map map = ...這樣的東西,並在地圖中添加適當的Store實例,而這個Store可以包含一個List,Map或者任何其他集合將包含適當的數據並提供查找此數據的方法。 –

+0

@LuiggiMendoza stiil無法完全掌握請你能請告訴我們預先感謝如果你可以請張貼有助於明白理解的代碼 –

+0

你是否希望新地圖的元素是Map < String,String>'或'Map >'? –

回答

0

(可以說,這應該是一個但它不適合)

如果一個數據結構的需求映射到一個標準的API類的直接使用,我直接使用它。如果事情變得與你的情況一樣複雜,我遵循不同的策略:

  1. 確定從數據結構中確切需要插入,迭代和訪問的形式。哪些操作足以頻繁發生潛在的性能問題?
  2. 指定作爲接口,並寫入相應的單元測試。
  3. 實現接口,通常使用API​​類的組合。

這有幾個優點。複雜的API類組合具有許多功能,其中大多數不需要指定或測試。對大部分代碼隱藏迭代某些類組合的複雜性,並單獨進行測試。如果由於性能瓶頸或需求變化而需要更改實現,則可以在一個類的實現中完成。

我建議增加外部黑盒要求的問題,而不是根據地圖的具體實施。

+0

謝謝,你可以請指教我可以創建自定義數據結構,那麼這將是最好的自定義數據結構奧爾多請你能請向我展示它將適用於哪種自定義數據結構 –

+0

選擇最佳自定義數據結構的關鍵是對需求的清晰和完整的理解。請參閱上面的第1步。恐怕我現在對這個問題沒有這種理解。 –

+0

能否請您告知理解缺失 –