gpt4 book ai didi

java - 我的整数列表在哪里变成了可选列表?

转载 作者:行者123 更新时间:2023-12-01 07:44:34 24 4
gpt4 key购买 nike

我试图返回字符串中以空格分隔的数字的最大值和最小值。这是我到目前为止所拥有的:

public static String HighAndLow(String numbers) {
List<Integer> nums = Arrays.asList(numbers.split(" ")).stream()
.map(s -> Integer.parseInt(s))
.collect(Collectors.toList());
int max = nums.stream().reduce((a, b) -> a > b ? a : b);
int min = nums.stream().reduce((a, b) -> a < b ? a : b);
return max + " " + min;
}

但是该代码不会编译,而是返回”

error: incompatible types: Optional<Integer> cannot be converted to int

我不明白...我的代码中的什么是将整数/字符串转换为可选? map 是否默认执行此操作,或者它是我编码方式所独有的?我尝试做另一个映射来调用可选的 get 方法,但这似乎也不起作用。

最佳答案

您不需要使用reduce操作两次以获得最小值和最大值。只需使用 IntSummaryStatisticsList<Integer>并得到MaxMin从这个统计数据中摆脱处理 Optional

public static String HighAndLow(String numbers) {
IntSummaryStatistics stats = Arrays.stream(numbers.split(" "))
.mapToInt(Integer::parseInt)
.summaryStatistics();
return stats.getMax() + " " + stats.getMin();
}

IntSummaryStatistics为您提供除 max 之外的更多结果和min

IntSummaryStatistics{count=10, sum=129, min=2, average=12.900000, max=29}

关于java - 我的整数列表在哪里变成了可选<Integer>列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55822226/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com