作者:QQweiqiang_850 | 来源:互联网 | 2023-01-13 17:40
以下代码
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
(实际和正式)参数列表长度不同)
有谁能解释为什么?