java - 从 LinkedHashMap 获取有序 Stream

标签 java java-stream

如何获得订单 Stream来自LinkedHashMap<String,Object>

我可以获得排序的Stream使用map.entrySet().stream().sorted() ,但这会按项目的自然顺序对项目进行排序,并且不支持 LinkedHashMap 中的插入顺序.

最佳答案

它会自然发生,无需任何干预。请注意,我选择了非常大的 key ,以避免可能会污染演示的冲突。

    Random r = new Random(37);
    List<Integer> originalOrder = new ArrayList<>();
    Map<Integer,Integer> map = new LinkedHashMap<>();
    for (int i = 1; i < 10; i++) {
        int key = r.nextInt(1000000);
        int value = r.nextInt(100);
        originalOrder.add(value);
        map.put(key,value);
    }
    System.out.println(originalOrder);
    System.out.println(map.values());
    map.values().stream().forEach(a->System.out.print(" " + a + " "));
    System.out.println();
    map.entrySet().stream().forEach(a->System.out.print(" " + a.getValue() + " ")); 

应该打印这个或类似的东西

[23, 18, 26, 73, 0, 6, 91, 94, 31]
[23, 18, 26, 73, 0, 6, 91, 94, 31]
23 18 26 73 0 6 91 94 31
23 18 26 73 0 6 91 94 31

关于java - 从 LinkedHashMap 获取有序 Stream,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59694656/

相关文章:

java - OS X sleep 后 Java 客户端无法访问 Solr 服务器

java - 为什么我的小程序有警告标志?

java - 为什么我不能在这段代码中以相反的顺序排序?

java - 当原始 map 包含集合作为值时,如何创建反向 map ?

java - 在访问值之前调用 "Optional#isPresent()"

java - java中的代码含义(i +"").getBytes()

java - 从 Java 访问 Scala 嵌套类

java - 为什么最终实例变量没有给出默认值?

java - 将自定义收集器与 java 8 流一起使用时出现 ClassCastException

Java - 过滤掉最低整数的汇总列表