Java 从LinkedHashMap获取有序流

Java 从LinkedHashMap获取有序流,java,java-stream,Java,Java Stream,如何从LinkedHashMap获取有序的流 我可以使用map.entrySet().Stream().sorted()获得一个排序的流,但这将按照项目的自然顺序进行排序,并且不支持从LinkedHashMap插入顺序。它将在没有任何干预的情况下自然发生。请注意,我选择了非常大的键,以避免可能会污染演示的碰撞 Random r = new Random(37); List<Integer> originalOrder = new ArrayList<>()

如何从
LinkedHashMap
获取有序的


我可以使用
map.entrySet().Stream().sorted()
获得一个排序的
,但这将按照项目的自然顺序进行排序,并且不支持从
LinkedHashMap

插入顺序。它将在没有任何干预的情况下自然发生。请注意,我选择了非常大的键,以避免可能会污染演示的碰撞

    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() + " ")); 

Random r=新随机数(37);
List originalOrder=new ArrayList();
Map Map=newlinkedhashmap();
对于(int i=1;i<10;i++){
int key=r.nextInt(1000000);
int值=r.nextInt(100);
原始顺序。添加(值);
map.put(键、值);
}
System.out.println(原始订单);
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]
23182673069431
23182673069431


它将在没有任何干预的情况下自然发生。请注意,我选择了非常大的键,以避免可能会污染演示的碰撞

    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() + " ")); 

Random r=新随机数(37);
List originalOrder=new ArrayList();
Map Map=newlinkedhashmap();
对于(int i=1;i<10;i++){
int key=r.nextInt(1000000);
int值=r.nextInt(100);
原始顺序。添加(值);
map.put(键、值);
}
System.out.println(原始订单);
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]
23182673069431
23182673069431


好的,删除
.sorted()
。那么您想要排序列表还是有序列表?如果您想要有序列表,请删除@JBNizetWell提到的.sorted(),删除
.sorted()
。那么您想要排序列表还是有序列表?如果您想要有序列表,请删除@JBNizet提到的.sorted()