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

4

我喜欢Java 8中的Streams概念。现在,我想使用Java Streams将Java中的Map转换为已排序的List。我只想显示列表,而不存储它。我希望结果列表如下:

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));
1个回答

10

我不明白为什么除了玩Stream之外,还有谁想这样做,但你可以将Map转换为一个扁平的Integer流,然后进行排序:

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

我只是想找到另一种扁平化链表的方法。http://www.geeksforgeeks.org/flattening-a-linked-list/ - raj

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接