2017-06-19 83 views
-2

我的學生類只有三個屬性 - 年齡,性別和姓名。 我有一個地圖,如Map<String, Student>其中key是一個UUID字符串,充當學生的標識符。轉換列表<Students>到地圖<K, List<V>>

現在我想將此地圖轉換爲另一個地圖模式 - Map<String,List<String>>。在這個圖中,關鍵字可以是學生的性別,值將是與該性別相對應的UUID列表。

我可以實現這個使用pre-Java8語法,但我想通過Java8流API和lambda表達式來做到這一點。請幫助。

我曾嘗試 - Map<String, Student> map; map.entrySet().stream().collect(e -> e.getValue().getSex(), ???how to get list of keys here???)

我能夠正確地設定目標映射的關鍵,但我努力設置的值。

+6

你到目前爲止嘗試過什麼?什麼不工作? –

+0

那些誰downvoting,請給我一個解決方案以及。只是downvote沒有幫助 –

回答

3
map.entrySet().stream() 
      .collect(Collectors.groupingBy(entry -> entry.getValue().getSex(), 
        Collectors.mapping(entry -> entry.getKey(), Collectors.toList()))); 
+0

這個工程。謝謝。 –

相關問題