使用java8流将Map <Integer,List <Integer >>转换为List <Integer>

raj*_*raj 4 java java-8 java-stream

我喜欢java 8中的Streams概念.现在我想借助Java Streams将java中的Map转换为有序列表.我只想显示列表而不将其存储在任何地方.我想在结果列表中输出此输出:

5, 7, 8, 10, 19, 20, 22, 28, 30, 35, 40, 45, 50 . 
Run Code Online (Sandbox Code Playgroud)

这是我的代码:

    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));
Run Code Online (Sandbox Code Playgroud)

Era*_*ran 10

我不明白为什么有人会这样做(除了使用Streams),但你可以将其转换为s Map的平面然后对其进行排序:StreamInteger

List<Integer> sorted =
    obj.entrySet()
       .stream()
       .flatMap(e-> Stream.concat(Stream.of(e.getKey()),e.getValue().stream()))
       .sorted()
       .collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)