Java 8引入了许多新特性,其中最引人注目的是Lambda表达式和Stream API。这两个特性极大地提高了Java编程的简洁性和效率。本文将分别介绍这两个特性的基本概念和使用方法。
一、Lambda表达式
Lambda表达式是一种新的编程语法,它允许我们将函数作为参数传递给其他方法,从而使代码更加简洁。Lambda表达式的基本语法如下:
(parameters) -> expression
或者
(parameters) -> {
statements; }
例如,我们可以使用Lambda表达式来定义一个简单的加法运算:
(a, b) -> a + b
这个Lambda表达式接受两个参数a和b,返回它们的和。我们可以用这个Lambda表达式作为参数传递给其他方法,例如:
import java.util.function.BiFunction;
public class LambdaExample {
public static void main(String[] args) {
BiFunction<Integer, Integer, Integer> add = (a, b) -> a + b;
int sum = add.apply(1, 2);
System.out.println("Sum: " + sum); // 输出:Sum: 3
}
}
二、Stream API
Stream API是Java 8中引入的一种用于处理集合的新工具。它提供了一种高效且易于使用的方式来处理数据。Stream API支持多种操作,如过滤、映射、排序等。以下是一些常用的Stream操作:
- filter:过滤元素
List<String> names = Arrays.asList("张三", "李四", "王五");
List<String> filteredNames = names.stream()
.filter(name -> name.startsWith("张"))
.collect(Collectors.toList());
System.out.println(filteredNames); // 输出:[张三]
- map:转换元素
List<Integer> numbers = Arrays.asList(1, 2, 3);
List<Integer> squaredNumbers = numbers.stream()
.map(n -> n * n)
.collect(Collectors.toList());
System.out.println(squaredNumbers); // 输出:[1, 4, 9]
- sorted:排序
List<String> names = Arrays.asList("张三", "李四", "王五");
List<String> sortedNames = names.stream()
.sorted()
.collect(Collectors.toList());
System.out.println(sortedNames); // 输出:[张三, 李四, 王五]
- reduce:聚合
List<Integer> numbers = Arrays.asList(1, 2, 3);
Optional<Integer> sum = numbers.stream()
.reduce((a, b) -> a + b);
System.out.println(sum.get()); // 输出:6
通过结合使用Lambda表达式和Stream API,我们可以编写出更加简洁、高效的Java代码。例如,我们可以使用以下代码来计算一个整数列表中所有偶数的和:
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6);
int evenSum = numbers.stream()
.filter(n -> n % 2 == 0)
.mapToInt(Integer::intValue)
.sum();
System.out.println("Even sum: " + evenSum); // 输出:Even sum: 12
总之,Java 8中的Lambda表达式和Stream API为我们提供了更加简洁、高效的编程方式。掌握这两个特性,将有助于我们编写出更高质量的Java代码。