如何获得订单 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/