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()