Java 8是Java语言的一个重要版本,引入了许多新的特性和功能,其中流式处理和Lambda表达式是最具革命性的改进之一。本文将带你轻松入门Java 8新特性,通过实战案例,让你掌握流式处理与Lambda表达式的使用。
流式处理:高效处理集合数据
流式处理是Java 8引入的一种新的数据处理方式,它允许你以声明式的方式处理集合数据。相比传统的for循环,流式处理具有更高的效率,特别是在处理大数据集时。
1. 创建流
在Java 8中,你可以通过以下方式创建一个流:
- 集合类(如List、Set、Map)的stream()方法
- Arrays类的stream()方法
- 自定义的Collection类的stream()方法
List<String> list = Arrays.asList("Apple", "Banana", "Cherry");
Stream<String> stream = list.stream();
2. 流操作
流操作包括中间操作和终端操作。中间操作用于处理流中的元素,终端操作用于生成最终结果。
中间操作
- filter:过滤元素
- map:转换元素
- sorted:排序
- distinct:去重
Stream<String> stream = list.stream()
.filter(s -> s.startsWith("A"))
.map(String::toUpperCase)
.sorted()
.distinct();
终端操作
- forEach:遍历流中的元素
- collect:收集流中的元素
list.stream()
.filter(s -> s.startsWith("A"))
.map(String::toUpperCase)
.sorted()
.distinct()
.forEach(System.out::println);
Lambda表达式:简化代码
Lambda表达式是Java 8引入的另一种重要特性,它允许你以更简洁的方式编写代码。Lambda表达式可以应用于函数式接口,使代码更加简洁易读。
1. 函数式接口
函数式接口是指只有一个抽象方法的接口。Lambda表达式可以应用于函数式接口。
@FunctionalInterface
interface GreetingService {
void greet(String name);
}
2. Lambda表达式
Lambda表达式由三个部分组成:参数列表、箭头、表达式。
GreetingService service = name -> System.out.println("Hello, " + name);
service.greet("World");
实战案例
以下是一个使用Java 8新特性处理学生成绩的实战案例。
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
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;
}
}
public class Main {
public static void main(String[] args) {
List<Student> students = Arrays.asList(
new Student("Alice", 20, 85.5),
new Student("Bob", 21, 92.0),
new Student("Charlie", 22, 78.5)
);
// 使用Lambda表达式和流操作查找平均分超过80的学生
List<Student> highScores = students.stream()
.filter(s -> s.getScore() > 80)
.collect(Collectors.toList());
highScores.forEach(s -> System.out.println(s.getName() + " got a high score: " + s.getScore()));
}
}
通过以上实战案例,你学会了如何使用Java 8的流式处理和Lambda表达式处理数据,相信你已经掌握了这两种新特性的使用方法。
