在Java的世界里,随着版本的更新,我们总是能够发现一些新的特性和改进。Java 8的推出无疑是一次巨大的变革,其中最引人注目的便是Stream API和Lambda表达式。这两个特性极大地提高了Java编程的效率,让开发者可以更加简洁、直观地编写代码。本文将带您深入探索Java 8的新特性,并通过案例解析让您轻松上手。

一、Lambda表达式:更简洁的代码

Lambda表达式是Java 8的一大亮点,它允许我们在需要使用匿名函数的地方使用更加简洁的代码。以下是一个使用Lambda表达式的例子:

// 使用传统匿名内部类的方式
Runnable run = new Runnable() {
    @Override
    public void run() {
        System.out.println("Hello World!");
    }
};

// 使用Lambda表达式
Runnable runLambda = () -> System.out.println("Hello World!");

在上面的代码中,我们可以看到使用Lambda表达式后,代码更加简洁明了。

二、Stream API:处理集合的强大工具

Stream API是Java 8中另一个非常重要的特性。它允许我们对集合进行并行处理,极大地提高了处理效率。以下是一个使用Stream API的例子:

// 使用传统的方式对集合进行处理
List<String> list = Arrays.asList("Java", "Python", "C++", "C", "Go");
Collections.sort(list, new Comparator<String>() {
    @Override
    public int compare(String o1, String o2) {
        return o1.compareTo(o2);
    }
});

// 使用Stream API
List<String> listStream = list.stream().sorted().collect(Collectors.toList());

在上面的代码中,我们可以看到使用Stream API后,代码更加简洁,而且易于理解。

三、实战案例:使用Stream API处理数据

下面我们来通过一个实际案例,来了解如何使用Stream API处理数据。

3.1 需求

假设我们有一个包含学生信息的集合,每个学生有姓名、年龄和成绩三个属性。我们需要统计年龄大于18岁的学生的平均成绩。

3.2 代码实现

import java.util.Arrays;
import java.util.List;
import java.util.OptionalDouble;

public class Student {
    private String name;
    private int age;
    private double score;

    // 省略构造函数、getter和setter

    public static void main(String[] args) {
        List<Student> students = Arrays.asList(
                new Student("Alice", 19, 90.5),
                new Student("Bob", 20, 85.0),
                new Student("Charlie", 18, 78.5),
                new Student("David", 21, 92.0)
        );

        OptionalDouble average = students.stream()
                .filter(student -> student.getAge() > 18)
                .mapToDouble(Student::getScore)
                .average();

        average.ifPresent(avg -> System.out.println("Average score: " + avg));
    }
}

在上面的代码中,我们使用Stream API对学生信息进行筛选、映射和求平均值操作,从而实现了统计年龄大于18岁的学生平均成绩的功能。

四、总结

本文介绍了Java 8的Lambda表达式和Stream API这两个核心特性,并通过案例解析了如何使用它们。相信通过本文的学习,您已经可以轻松上手Java 8的新特性,并在实际项目中发挥它们的威力。