我尝试在对 map 进行排序后将 map 键分配给整数数组。
这就是我正在尝试的:
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;
}
但是当我打印数组时,它不会按排序顺序打印,而是按常规 map 顺序打印。
我知道一个方法:forEach(System.out::println)
来打印流本身中的值,但无法分配。
正确的方法是什么?
最佳答案
您的流未对 map 的条目集进行适当排序。此外,仅调用 sorted
不会运行任何排序代码(不执行任何终端操作)。
您可以使用它来获取通过流排序的数组:
int[] hotels = myMap.entrySet().stream()
.sorted(Map.Entry.comparingByValue())
.mapToInt(Map.Entry::getKey)
.toArray();
关于Java:通过流将排序的映射键分配给数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51278389/