[英]Find Max number from List of String numbers using Java Streams
我正在尝试获取字符串列表中的最大数量。
我的代码是:
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();
上面的代码给出了一个错误。 错误是:无法编译的源代码 - 错误的符号类型:java.util.stream.Stream.mapToInt.max 结果我应该得到1125
。 我尝试了不同的方法,但没有一个有效。
您需要将String
解析为Integer
,这可以使用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);
因为不能保证您的 stream 不会为空,这就是需要orElse
的原因。
mapToint
不会 map 任何 object(例如String
)到 integer。 它用于 map Integer
类型流到int
stream。
You need to first map the String
numbers to Integer
using map
with parseInt
and then map the Integer
to int
.
使用以下代码:
Integer maxNum = list.stream()
.map(Integer::parseInt)
.mapToInt(Integer::intValue)
.max()
.getAsInt();
希望这可以帮助!
@Abdusoli mapToInt 可以 map 仅 int 类型的数据,因此您必须首先将其解析为 int,最终结果是 OptionalInt,因此应将其转换为 Int。 你可以尝试两种方式
第一种方法
Integer maxNum = list.stream()
.mapToInt(Integer::parseInt)
.max()
.getAsInt();
System.out.println(maxNum);
第二种方法
Integer maxNum = list.stream()
.map(Integer::parseInt)
.mapToInt(Integer::intValue)
.max().getAsInt();
System.out.println(maxNum);
intValue不是 static 方法,您应该使用Integer::parseInt代替。 此外, max()返回OptionalInt而不是Integer ,您可以使用max().getAsInt(); 或max().orElse();
如
Integer maxNum = list.stream().mapToInt(Integer::parseInt).max().getAsInt();
Integer maxNum = list.stream()
.map(Integer::valueOf).mapToInt(v-> v)
.max().orElseThrow(NoSuchElementException::new);
你可以试试这个,而不是把 intValue 改为 valueOf
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.