Java 8新特性解析:实战案例带你轻松掌握Stream、Lambda表达式等实用技巧

2026-08-10 0 阅读

Java 8作为Java语言的一个重要版本,引入了许多新的特性和改进,其中最引人注目的莫过于Stream API和Lambda表达式。这些新特性不仅让Java语言更加现代化,也极大地提高了开发效率。本文将通过实战案例,带你轻松掌握Java 8的新特性。

Stream API:数据处理的新方式

Stream API是Java 8引入的一个非常强大的数据处理工具。它允许开发者以声明式的方式处理数据集合,这使得代码更加简洁、易读。下面通过一个简单的例子来介绍Stream API的使用。

1. 创建Stream

List<String> list = Arrays.asList("Apple", "Banana", "Cherry", "Date");

Stream<String> stream = list.stream();

在这个例子中,我们首先创建了一个字符串列表,然后通过调用stream()方法创建了一个Stream对象。

2. 筛选和排序

List<String> filtered = stream.filter(s -> s.startsWith("A"))
                            .sorted()
                            .collect(Collectors.toList());

在这个例子中,我们使用filter()方法筛选出以”A”开头的字符串,然后使用sorted()方法对结果进行排序,最后通过collect()方法将结果收集到一个新的列表中。

3. 映射和转换

List<String> mapped = stream.map(String::toUpperCase)
                            .collect(Collectors.toList());

在这个例子中,我们使用map()方法将所有字符串转换为大写形式。

4. 收集结果

Set<String> unique = stream.distinct()
                          .collect(Collectors.toSet());

在这个例子中,我们使用distinct()方法去除重复的元素,并将结果收集到一个Set中。

Lambda表达式:简化代码的新方式

Lambda表达式是Java 8引入的另一个重要特性,它允许开发者以更简洁的方式编写代码。下面通过一个简单的例子来介绍Lambda表达式的使用。

1. 简单的Lambda表达式

Runnable r = () -> System.out.println("Hello, World!");
r.run();

在这个例子中,我们创建了一个Lambda表达式,它没有参数,只包含一个System.out.println调用。

2. 使用Lambda表达式作为函数式接口的实现

Comparator<String> comparator = (s1, s2) -> s1.compareTo(s2);

在这个例子中,我们使用Lambda表达式作为Comparator接口的实现。

实战案例:使用Stream API和Lambda表达式处理数据

下面通过一个实战案例,展示如何使用Stream API和Lambda表达式处理数据。

1. 数据准备

假设我们有一个学生类,包含姓名、年龄和成绩三个属性。

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

    public Student(String name, int age, double score) {
        this.name = name;
        this.age = age;
        this.score = score;
    }

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }

    public double getScore() {
        return score;
    }
}

2. 使用Stream API和Lambda表达式处理数据

List<Student> students = Arrays.asList(
    new Student("Alice", 20, 90.0),
    new Student("Bob", 21, 85.0),
    new Student("Charlie", 22, 95.0)
);

// 筛选年龄大于20岁的学生
List<Student> filteredStudents = students.stream()
    .filter(s -> s.getAge() > 20)
    .collect(Collectors.toList());

// 获取年龄大于20岁的学生的平均成绩
double averageScore = students.stream()
    .filter(s -> s.getAge() > 20)
    .mapToDouble(Student::getScore)
    .average()
    .orElse(0.0);

System.out.println("Average score of students over 20: " + averageScore);

在这个例子中,我们首先创建了一个学生列表,然后使用Stream API和Lambda表达式筛选出年龄大于20岁的学生,并计算他们的平均成绩。

总结

Java 8的新特性让Java语言更加现代化和强大。通过本文的介绍,相信你已经对Stream API和Lambda表达式有了初步的了解。在实际开发中,熟练掌握这些新特性,将大大提高你的开发效率。

分享到: