2017-04-20 75 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

相关问题