Java 8 是 Java 语言的一个重要版本,它引入了大量的新特性和改进,使得编程更加高效和便捷。其中,Stream API 和 Lambda 表达式是 Java 8 中最引人注目的特性之一。本文将通过实战案例,带你轻松入门 Java 8 新特性,让你领略 Stream、Lambda 表达式等高效编程技巧。
Stream API:让集合操作更简洁
Stream API 是 Java 8 引入的一个新的抽象层,用于处理集合(如 List、Set、Map 等)中的元素。它允许你以声明式的方式处理集合,从而简化代码并提高可读性。
实战案例:使用 Stream API 处理 List
假设我们有一个 List,包含一些学生对象,每个学生对象有姓名和成绩。我们想找出所有成绩大于 90 分的学生。
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class StreamExample {
public static void main(String[] args) {
List<Student> students = Arrays.asList(
new Student("Alice", 85),
new Student("Bob", 92),
new Student("Charlie", 88),
new Student("David", 95)
);
List<Student> highScores = students.stream()
.filter(s -> s.getScore() > 90)
.collect(Collectors.toList());
highScores.forEach(s -> System.out.println(s.getName() + " - " + s.getScore()));
}
}
class Student {
private String name;
private int score;
public Student(String name, int score) {
this.name = name;
this.score = score;
}
public String getName() {
return name;
}
public int getScore() {
return score;
}
}
在这个例子中,我们使用了 stream() 方法来创建一个 Stream 对象,然后通过 filter() 方法筛选出成绩大于 90 分的学生,最后使用 collect() 方法将结果收集到一个新的 List 中。
Lambda 表达式:更简洁的代码
Lambda 表达式是 Java 8 引入的一个新的语法结构,它允许你以更简洁的方式编写匿名函数。Lambda 表达式可以用于实现接口,这些接口只有一个抽象方法。
实战案例:使用 Lambda 表达式实现 Comparator
假设我们有一个 List,包含一些学生对象,我们想按照成绩从高到低排序。
import java.util.Arrays;
import java.util.List;
import java.util.Collections;
public class LambdaExample {
public static void main(String[] args) {
List<Student> students = Arrays.asList(
new Student("Alice", 85),
new Student("Bob", 92),
new Student("Charlie", 88),
new Student("David", 95)
);
Collections.sort(students, (s1, s2) -> s2.getScore() - s1.getScore());
students.forEach(s -> System.out.println(s.getName() + " - " + s.getScore()));
}
}
在这个例子中,我们使用了 Lambda 表达式 (s1, s2) -> s2.getScore() - s1.getScore() 来实现 Comparator 接口,从而按照成绩从高到低排序。
总结
Java 8 的新特性使得编程更加高效和便捷。通过 Stream API 和 Lambda 表达式,你可以以更简洁的方式处理集合和实现接口。通过本文的实战案例,相信你已经对 Java 8 新特性有了初步的了解。希望你能将这些新特性应用到实际项目中,提高你的编程效率。
