Collections 转换地图<;整数,长>;到整数数组

Collections 转换地图<;整数,长>;到整数数组,collections,java-8,Collections,Java 8,有人能告诉我我做错了什么吗p.getVote(),并且集合计数逻辑返回Long,但我正在尝试使我的最终输出成为一个整数数组 Map<Integer, Long> counters = iqr.getQgagueUniqueVotes().stream() .collect(Collectors.groupingBy(p -> ((int)p.getVote()),

有人能告诉我我做错了什么吗
p.getVote()
,并且集合计数逻辑返回Long,但我正在尝试使我的最终输出成为一个整数数组

Map<Integer, Long> counters = iqr.getQgagueUniqueVotes().stream()
                               .collect(Collectors.groupingBy(p -> ((int)p.getVote()), 
                                    Collectors.counting()));
Collection<Long> values = counters.values();
long[] targetArray = values.toArray(new Long[values.size()]);

targetArray
数组的类型更改为
Long
类型:

Long[] targetArray = values.toArray(new Long[values.size()]);
或者创建一个值流并映射到一个类型
long
,然后收集到一个数组

long[] targetArray = values.stream().mapToLong(Long::longValue).toArray();

您的问题只是将
Map
转换为
long[]
?然后,您可能应该使用一些硬编码数据替换基于stream语句的初始化(这也取决于未显示的变量)。另请参见:。类似:我建议使用
.toArray(新长[values.size()])
而不是
.toArray(新长[0])
的模式。
long[] targetArray = values.stream().mapToLong(Long::longValue).toArray();