因此,我正在阅读OCP书籍,其中有一个看起来像这样的代码,我正在键入所有不需要的信息,因为stackoverflow表示我的帖子大部分是代码。在这里,我认为这是一个stackoverflow。所以问题当我输入此代码
Stream<String> ohMy = Stream.of("lions", "tigers", "bears");
Map<Integer, Optional<Character>> map = ohMy.collect(
groupingBy(
String::length,
mapping(s -> s.charAt(0),
minBy(Comparator.naturalOrder()))));
System.out.println(map); // {5=Optional[b], 6=Optional[t]}
我遇到错误
Error:(25, 27) java: no suitable method found for groupingBy(String::length,java.util.stream.Collector<java.lang.Object,capture#1 of ?,java.util.Optional<T>>)
method java.util.stream.Collectors.<T,K>groupingBy(java.util.function.Function<? super T,? extends K>) is not applicable
(cannot infer type-variable(s) T,K
(actual and formal argument lists differ in length))
method java.util.stream.Collectors.<T,K,A,D>groupingBy(java.util.function.Function<? super T,? extends K>,java.util.stream.Collector<? super T,A,D>) is not applicable
(inferred type does not conform to upper bound(s)
inferred: java.lang.Object
upper bound(s): T,java.lang.Comparable<? super T>,java.lang.Object)
method java.util.stream.Collectors.<T,K,D,A,M>groupingBy(java.util.function.Function<? super T,? extends K>,java.util.function.Supplier<M>,java.util.stream.Collector<? super T,A,D>) is not applicable
(cannot infer type-variable(s) T,K,D,A,M
(actual and formal argument lists differ in length))
无法弄清楚
[似乎与Intellij
发行版有关。
请参阅问题追踪器的链接:https://youtrack.jetbrains.com/issue/IDEA-212740
通过普通的控制台样式进行编译的过程就像是一种魅力:
javac File.java
java Classname
执行以下操作:
import java.util.Comparator;
import java.util.Map;
import java.util.Optional;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class Main {
public static void main(String[] args) {
Stream<String> ohMy = Stream.of("lions", "tigers", "bears");
Map<Integer, Optional<Character>> map = ohMy
.collect(Collectors.groupingBy(String::length, Collectors.mapping(s -> s.charAt(0), Collectors.minBy(Comparator.naturalOrder()))));
System.out.println(map);
}
}