2017-08-01 35 views
3

我有一個地圖,其是以下strucutre的:用java流創建從新地圖現有地圖

Map<String, Map<String, String>> input; 

它基本上包含,一組的ID和每個ID,相關聯的屬性的值。

For ex: 
ID:  Attribute Value 
A   X   100 
A   Y   200 
B   X   40 
B   Y   40 

我感興趣的只是屬性X每個ID,我想要做一些處理,並將其存儲新的地圖 這將具有相同的確定指標地圖>

我想這在Java中8:

Map<String, Map<String, String>> getResults(Map<String, Map<String, String>> input) { 
    input.entrySet().stream() 
     .map(id -> { 
      String valueX = id.getValue().get("X"); 
      String computeX = compute(valueX); 
      // Now start adding these results to the new map. 
     }) 
} 

我無法關注,我如何將它添加到新地圖。

回答

4

您可以收集輸入地圖的入口進入一個新的地圖是這樣的:

Map<String, Map<String, String>> getResults(Map<String, Map<String, String>> input) 
{ 
    return input.entrySet() 
       .stream() 
       .collect(Collectors.toMap(Map.Entry::getKey, 
              e -> { 
               Map<String,String> map = new HashMap<>(); 
               map.put("X",e.getValue().get("X")); 
               return map; 
              })); 
} 
  • 輸出映射的鍵是一樣的輸入地圖的鑰匙。

  • 輸出映射的值是通過創建一個新的HashMap<String,String>並將其放入"X"鍵的值構造的。

+0

我將只需要返回input.entrySet()? – user1692342

+1

@ user1692342哦,答案固定。 – Eran

+1

@ user1692342修復了另一個錯字 – Eran