2015-06-21 35 views
-3

我想將數據存儲在如下所示的結構中。有一個地圖存儲在另一個嵌套的地圖值 -不同的數據結構在java中保存除地圖以外的其他數據結構

Key    Value 
        (Key)   (Value) 
B1  --> TradeRef ----> "tradeRef1" 
       Dealdate ----> "DealDate1", 

B2  --> TradeRef ----> "tradeRef2" 
       Dealdate ----> "DealDate2"    

我開發了一個解決方案,它工作正常。有沒有更好的方法來解決這個問題。

我用我的方法的問題是,正在創建大量的數組列表。此外,如果超級地圖的關鍵字的數量像B1和B2以及隨後的那樣增加,讓我們假設新的關鍵字B3再次引入,則將引入新的數組列表。出於這個原因,請以任何替代方法告知我,以達到此問題的相同結果。

Map<String, Map<String, List<String>>> mapOfMapOfStrings = new HashMap<String, Map<String, List<String>>>(); 

HashMap<String, List<String>> b1Map = new HashMap<String, List<String>>(); 
HashMap<String, List<String>> b2Map = new HashMap<String, List<String>>();  

ArrayList<String> B1tradeRefList = new ArrayList<String>(); 
ArrayList<String> B1dealDateList = new ArrayList<String>(); 
ArrayList<String> B2tradeRefList = new ArrayList<String>(); 
ArrayList<String> B2dealDateList = new ArrayList<String>(); 

B1tradeRefList.add("tradeRef1"); 
B1tradeRefList.add("tradeRef2"); 
B1dealDateList.add("DealDate1"); 
B1dealDateList.add("DealDate2"); 

B2tradeRefList.add("tradeRef33"); 
B2tradeRefList.add("tradeRef44"); 
B2dealDateList.add("DealDate22"); 
B2dealDateList.add("DealDate24"); 

b1Map.put("TradeRef", B1tradeRefList); 
b1Map.put("Dealdate", B1dealDateList); 

b2Map.put("TradeRef", B2tradeRefList); 
b2Map.put("Dealdate", B2dealDateList); 

mapOfMapOfStrings.put("B1", b1Map); 
mapOfMapOfStrings.put("B2", b2Map); 

可以此問題,通過以有效方式使用的任何其他數據結構(例如樹木或鏈表)來解決?或者,也許通過創建自定義數據結構? 我希望探索與我的嵌套地圖解決方案不同的上述相同功能的自定義數據結構實現。

回答

0

不知道爲什麼你不只是使用一個類:

class Trade { 
    String tradeRef; 
    Date dealDate; 
} 

,那麼你可以簡單地有Map<String, Trade>無按鍵的不必要的嵌套和重複。這種方法更快,更安全(因爲你有一個明確的類實例),並且比使用常量鍵的嵌套地圖使用更少的內存。

+0

非常感謝,但仍然無法掌握整個圖片,那麼我將如何添加特定於B1和B2的東西,因爲我已經顯示請求您請取一些代碼,這將有助於瞭解更多預先致謝 –

+0

您應該熟悉現在在Java中使用類...這是一個簡單的僅數據類。如何實際使用它必須非常依賴於您的實際應用。 – nneonneo

+0

@nneonno我認爲你的建議pojo成員變量必須是類型例如類貿易{ 私人清單< String> tradeRef; 私人清單 dealDate; } –