将Map <integer,long =“”>转换为Integer数组

时间:2018-02-25 19:37:35

标签: collections java-8

有人能告诉我这里做错了什么吗? p.getVote(),集合计数逻辑返回Long,但我试图让我的结束输出一个int数组。

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()]);

错误:

Incompatible type: Inference variable has incompatible upper bound

1 个答案:

答案 0 :(得分:3)

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

Long[] targetArray = values.toArray(new Long[values.size()]);

或创建值的流并映射到类型long然后收集到数组。

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