我为什么要通过方法错误进行分组?

问题描述 投票:0回答:2

因此,我正在阅读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))

无法弄清楚

java stream java-stream
2个回答
0
投票

[似乎与Intellij发行版有关。

请参阅问题追踪器的链接:https://youtrack.jetbrains.com/issue/IDEA-212740

通过普通的控制台样式进行编译的过程就像是一种魅力:

javac File.java

java Classname


0
投票

执行以下操作:

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); 
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.