我正在尝试对地图排序后将地图键分配给整数数组。
这就是尝试:
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)
用于在流本身中打印值,但无法分配。
正确的方法是什么?
答案 0 :(得分:1)
您的流未将地图的条目集排序到位。此外,仅调用sorted
不会运行任何排序代码(不执行任何终端操作)。
您可以使用它来获取流中排序的数组:
int[] hotels = myMap.entrySet().stream()
.sorted(Map.Entry.comparingByValue())
.mapToInt(Map.Entry::getKey)
.toArray();