Java 8新特性详解:实用案例教你轻松掌握Lambda表达式、Stream API等核心功能
Lambda表达式
Lambda表达式是Java 8引入的一个革命性的特性,它允许我们用更简洁的代码来表示匿名函数。在Java 8之前,如果我们需要实现一个函数式接口,就必须创建一个完整的类来实现接口中的所有方法。而Lambda表达式则允许我们在一行代码中定义函数式接口的实例。
实用案例
假设我们有一个学生类Student,其中包含学生的姓名和成绩,我们需要根据成绩对学生进行排序。在Java 8之前,我们可能会这样做:
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<Student> students = new ArrayList<>();
students.add(new Student("Alice", 90));
students.add(new Student("Bob", 85));
students.add(new Student("Charlie", 95));
Collections.sort(students, new Comparator<Student>() {
@Override
public int compare(Student s1, Student s2) {
return s1.getScore() - s2.getScore();
}
});
for (Student student : students) {
System.out.println(student.getName() + ": " + student.getScore());
}
}
}
使用Lambda表达式,代码可以简化为:
import java.util.ArrayList;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<Student> students = new ArrayList<>();
students.add(new Student("Alice", 90));
students.add(new Student("Bob", 85));
students.add(new Student("Charlie", 95));
Collections.sort(students, (s1, s2) -> s1.getScore() - s2.getScore());
for (Student student : students) {
System.out.println(student.getName() + ": " + student.getScore());
}
}
}
这样,我们就用更简洁的代码实现了同样的功能。
Stream API
Stream API是Java 8引入的另一个重要特性,它允许我们以声明式的方式处理数据集合。Stream API可以用于并行处理、过滤、映射、归约等操作,使得代码更加简洁和易于理解。
实用案例
假设我们有一个学生列表,我们需要找出所有成绩超过90分的学生,并且打印出他们的名字。使用Stream API,我们可以这样写:
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
List<Student> students = Arrays.asList(
new Student("Alice", 90),
new Student("Bob", 85),
new Student("Charlie", 95)
);
List<String> highScores = students.stream()
.filter(s -> s.getScore() > 90)
.map(Student::getName)
.collect(Collectors.toList());
for (String name : highScores) {
System.out.println(name);
}
}
}
这里,我们使用了filter方法来筛选出成绩超过90分的学生,然后使用map方法将学生对象映射到他们的名字,最后使用collect方法将结果收集到一个列表中。
总结
Java 8的新特性使得我们的代码更加简洁、易读和高效。Lambda表达式和Stream API是其中的两个核心功能,通过学习和应用这些新特性,我们可以写出更优秀的Java代码。
