我是第一次尝试java8流,并且在语法类型推断方面有点皱纹。这是片段:
它的核心是:
Arrays.stream(stringArray).mapToInt(Integer::parseInt).collect(Collectors.toList()));
这导致:
Error:(56, 84) java: method collect in interface java.util.stream.IntStream cannot be applied to given types;
required: java.util.function.Supplier<R>,java.util.function.ObjIntConsumer<R>,java.util.function.BiConsumer<R,R>
found: java.util.stream.Collector<java.lang.Object,capture#1 of ?,java.util.List<java.lang.Object>>
reason: cannot infer type-variable(s) R
(actual and formal argument lists differ in length)
这是一个更完整的代码段:
try {
br = new BufferedReader(new FileReader(inputFile));
} catch (FileNotFoundException e) {
e.printStackTrace();
}
String line = null;
while ((line = br.readLine()) != null) {
list.add(Arrays.stream(line.split(","))
.mapToInt(Integer::parseInt).collect(Collectors.toList()));
}
我尝试了一些类似的方法/调整但尚未突破。提示赞赏。
答案 0 :(得分:3)
这根本不是类型推断,而是<div id="mobileNavBar">
<div style="width:20%;">
<span class="menu-trigger"><i class="fas fa-bars menuFA fa-2x">first div</i></span>
</div>
<div style="width:80%">
second div
</div>
</div>
没有接受IntStream
的重载collect
方法。相反,您可以致电Collector
将其映射到IntStream#boxed
,然后将其收集到Stream<Integer>
:
List<Integer>
更简单的解决方案是将其直接映射到Arrays.stream(stringArray)
.mapToInt(Integer::parseInt)
.boxed()
.collect(Collectors.toList());
:
Stream<Integer>