2017-04-20 93 views
4

我喜歡Java中的Streams概念8。現在我想借助Java Streams將Java中的Map轉換爲排序列表。我只想顯示列表而不將它存儲在任何地方。我想在結果列表中的輸出:使用java8流將地圖<Integer,列表<Integer>>轉換爲列表<Integer>

5, 7, 8, 10, 19, 20, 22, 28, 30, 35, 40, 45, 50 . 

這裏是我的代碼:

Map<Integer, List<Integer>> obj=new HashMap<Integer, List<Integer>>(); 
    obj.put(5, Arrays.asList(7,8,30)); 
    obj.put(10, Arrays.asList(20)); 
    obj.put(19, Arrays.asList(22,50)); 
    obj.put(28, Arrays.asList(35,40,45)); 

回答

10

我不明白爲什麼有人會想這樣做(除了與流播放),但你可以轉換該Map到平坦的Integer秒,然後Stream對它進行排序:

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

我只是想找到另一種方式來拉平鏈表。 http://www.geeksforgeeks.org/flattening-a-linked-list/ – raj

相關問題