[英]Java: Assign sorted map keys via stream to an array
我正在尝试对地图排序后将地图键分配给整数数组。
这是在尝试什么:
java.util.stream.Stream<Map.Entry<Integer,Integer>> sorted =
myMap.entrySet().stream().sorted(Map.Entry.comparingByValue());
然后这就是分配方式:
int [] hotels = new int[myMap.size()];
int i = 0;
Set<Integer> keys = myMap.keySet();
for(Integer k:keys){
hotels[i++] = k;
}
但是,当我打印数组时,它不是按排序顺序打印,而是按常规映射顺序打印。
我知道一个方法: forEach(System.out:: println)
打印流本身中的值,但无法分配。
什么是正确的方法?
您的信息流未将地图的条目集排序到位。 此外,仅调用sorted
不会运行任何排序代码(不执行任何终端操作)。
您可以使用它来获取流中排序的数组:
int[] hotels = myMap.entrySet().stream()
.sorted(Map.Entry.comparingByValue())
.mapToInt(Map.Entry::getKey)
.toArray();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.