2016-07-26 50 views
0

鑑於以下地圖聲明Map<Integer, List<Integer>>我想使用Java 8 streams API通過單個流迭代將所有鍵值對收集到List<Integer>中。例如,假設下面的映射:如何將地圖鍵值收集到值爲集合的列表中

1->[2,3] 
4->[7,8] 

結果列表將是:[1,2,3,4,7,8]

+1

不要緊,該地圖項具有未定義的訂單? – Silverclaw

+0

@AndyTurner我還需要將關鍵字放入列表中,而不僅僅是值。 –

+1

我可能會這樣做,勢在必行:'列表 res = new ArrayList <>(); map.forEach((key,value) - > res.add(key); res.addAll(value);});' – eckes

回答

4
List<Integer> list = map.entrySet() 
     .stream() 
     .flatMap(e -> Stream.concat(Stream.of(e.getKey()), e.getValue().stream())) 
     .collect(Collectors.toList()); 
+0

呵呵! 'Stream.concat()'剛剛添加到我的詞彙:) –

相關問題