使用 Java Streams 从字符串数字列表中查找最大数字

Abd*_*oli 0 java java-stream

我正在尝试获取字符串列表中的最大数量。

我的代码是:

List<String> list = new ArrayList<String>();
list.add("00657");
list.add("00632");
list.add("00656");
list.add("01125");

Integer maxNum = list.stream()
                   .mapToInt(Integer::intValue)
                   .max();
Run Code Online (Sandbox Code Playgroud)

上面的代码给出了一个错误。错误是:无法编译的源代码 - 错误的符号类型:java.util.stream.Stream.mapToInt.max。 我应该得到1125结果。我尝试了不同的方法,但都没有奏效。

Mar*_*cca 12

您需要将Strings解析为Integers ,这可以使用parseInt

List<String> list = new ArrayList<>();
list.add("00657");
list.add("00632");
list.add("00656");
list.add("01125");

int maxNum = list.stream()
        .mapToInt(Integer::parseInt)
        .max()
        .orElse(-1);
Run Code Online (Sandbox Code Playgroud)

因为不能保证您的流不会为空,这就是为什么orElse需要 。