热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

收集IntStream进行映射时出错

如何解决《收集IntStream进行映射时出错》经验,请问有没有懂的朋友?

以下代码

String[] values = ...
.... 
Map map = new HashMap<>();
for (int i = 0; i 

由IntelliJ转换为:

Map map = IntStream.range(0, values.length)
        .collect(Collectors.toMap(
                i -> "X" + i,
                i -> values[i],
                (a, b) -> b));

这可以缩短为

Map map = IntStream.range(0, values.length)
            .collect(Collectors.toMap(
                    i -> "X" + i,
                    i -> values[i]));

2个流版本无法编译.

IntelliJ,暗示值[i]中的i存在问题:

不兼容的类型.
必需:int
Found:java.lang.Object

编译器抱怨:

错误:(35,17)java:接口java.util.stream.IntStream中的方法collect不能应用于给定的类型;
required:java.util.function.Supplier,java.util.function.ObjIntConsumer,java.util.function.BiConsumer
found:java.util.stream.Collector>
reason:无法推断类型变量R
(实际和正式)参数列表长度不同)

有谁能解释为什么?


推荐阅读
author-avatar
QQweiqiang_850
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有