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 表达式的使用有所帮助。