Java中实现函数式编程的Lambda表达式应用指南
### 1. Lambda表达式基础语法
```java
(parameters) -> expression
```
或
```java
(parameters) -> { statements; }
```
### 2. 函数式接口与Lambda
```java
// 自定义函数式接口
@FunctionalInterface
interface Calculator {
int calculate(int a, int b);
}
// Lambda实现
Calculator add = (a, b) -> a + b;
Calculator multiply = (a, b) -> a b;
```
### 3. 集合操作应用
```java
List names = Arrays.asList(Alice, Bob, Charlie);
// 遍历操作
names.forEach(name -> System.out.println(name));
// 过滤操作
List filtered = names.stream()
.filter(name -> name.startsWith(A))
.collect(Collectors.toList());
// 映射操作
List nameLengths = names.stream()
.map(name -> name.length())
.collect(Collectors.toList());
```
### 4. 方法引用
```java
// 静态方法引用
Function parser = Integer::parseInt;
// 实例方法引用
List strings = Arrays.asList(a, b, c);
strings.forEach(System.out::println);
// 构造方法引用
Supplier> listSupplier = ArrayList::new;
```
### 5. 内置函数式接口应用
```java
// Predicate接口
Predicate isLong = s -> s.length() > 5;
boolean result = isLong.test(Hello World);
// Function接口
Function stringToInt = s -> Integer.valueOf(s);
// Consumer接口
Consumer printer = s -> System.out.println(s);
// Supplier接口
Supplier randomSupplier = () -> Math.random();
```
### 6. 流式处理示例
```java
List numbers = Arrays.asList(1, 2, 3, 4, 5, 6);
// 链式操作
int sum = numbers.stream()
.filter(n -> n % 2 == 0)
.map(n -> n 2)
.reduce(0, Integer::sum);
```
### 7. 比较器实现
```java
List people = Arrays.asList(
new Person(Alice, 25),
new Person(Bob, 30)
);
// 按年龄排序
people.sort((p1, p2) -> p1.getAge() - p2.getAge());
// 使用Comparator组合
people.sort(Comparator
.comparing(Person::getName)
.thenComparing(Person::getAge));
```
### 8. 异常处理
```java
// 处理受检异常
Function safeParser = s -> {
try {
return Integer.parseInt(s);
} catch (NumberFormatException e) {
return 0;
}
};
```
### 9. 线程创建
```java
// 使用Lambda创建线程
Thread thread = new Thread(() -> {
System.out.println(Running in thread);
});
thread.start();
```
### 10. 延迟执行
```java
public static void executeIf(boolean condition, Runnable task) {
if (condition) {
task.run();
}
}
// 使用示例
executeIf(true, () -> System.out.println(条件满足));
```
### 11. 组合函数
```java
Function multiplyBy2 = x -> x 2;
Function add3 = x -> x + 3;
// 函数组合
Function composed = multiplyBy2.andThen(add3);
int result = composed.apply(5); // 结果为13
```
### 12. 实际应用场景
```java
// 事件处理
button.addActionListener(e -> System.out.println(按钮被点击));
// 可选值处理
Optional optional = Optional.of(value);
optional.ifPresent(val -> System.out.println(值存在: + val));
// 资源管理
try (BufferedReader reader = new BufferedReader(new FileReader(file.txt))) {
reader.lines()
.filter(line -> !line.isEmpty())
.forEach(System.out::println);
}
```
这些示例展示了Lambda表达式在Java函数式编程中的核心应用,通过简洁的语法实现更清晰的代码表达和更高效的数据处理。
更多推荐


所有评论(0)