繁体   English   中英

Java:通过流将已排序的映射键分配给数组

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM