Java Lambda List 求和 求最大最小 求平均
一、问题描述
小白想要实现一个程序,能够对一个整数列表进行求和、求最大值、求最小值和求平均值的操作。作为一名经验丰富的开发者,我将向他解释整个过程。
二、解决方案
1. 流程图
flowchart TD
A(开始) --> B(创建整数列表)
B --> C(求和)
C --> D(求最大值)
D --> E(求最小值)
E --> F(求平均值)
F --> G(结束)
2. 代码实现
(1) 创建整数列表
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
在这个示例中,我们创建了一个整数列表 numbers
,包含了数字 1 到 5。
(2) 求和
int sum = numbers.stream().mapToInt(Integer::intValue).sum();
我们使用 Java Lambda 表达式的 mapToInt
方法将整数列表转换为 IntStream
对象,然后调用 sum
方法求和。
(3) 求最大值
int max = numbers.stream().mapToInt(Integer::intValue).max().getAsInt();
我们使用 max
方法找到整数列表中的最大值。注意,由于返回值是 OptionalInt
类型,我们需要使用 getAsInt
方法获得实际的最大值。
(4) 求最小值
int min = numbers.stream().mapToInt(Integer::intValue).min().getAsInt();
我们使用 min
方法找到整数列表中的最小值。同样,由于返回值是 OptionalInt
类型,我们需要使用 getAsInt
方法获得实际的最小值。
(5) 求平均值
double average = numbers.stream().mapToInt(Integer::intValue).average().getAsDouble();
我们使用 average
方法求整数列表的平均值。由于返回值是 OptionalDouble
类型,我们需要使用 getAsDouble
方法获得实际的平均值。
3. 完整代码
import java.util.Arrays;
import java.util.List;
public class ListOperations {
public static void main(String[] args) {
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
int sum = numbers.stream().mapToInt(Integer::intValue).sum();
int max = numbers.stream().mapToInt(Integer::intValue).max().getAsInt();
int min = numbers.stream().mapToInt(Integer::intValue).min().getAsInt();
double average = numbers.stream().mapToInt(Integer::intValue).average().getAsDouble();
System.out.println("Sum: " + sum);
System.out.println("Max: " + max);
System.out.println("Min: " + min);
System.out.println("Average: " + average);
}
}
三、总结
通过本文,我们学习了如何使用 Java Lambda 表达式对整数列表进行求和、求最大值、求最小值和求平均值的操作。我们首先创建了一个整数列表,然后使用 Java 8 的 Stream API 对其进行操作。我们使用 mapToInt
方法将整数列表转换为 IntStream
对象,然后调用相应的方法进行求和、求最大值、求最小值和求平均值。最后,我们输出了结果。
希望本文对于刚入行的小白对 Java Lambda 表达式的使用有所帮助。