### 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函数式编程中的核心应用,通过简洁的语法实现更清晰的代码表达和更高效的数据处理。

Logo

码道开发者社区,聚焦华为云码道 CodeArts 代码智能体,沉淀 Agent、Skill、鸿蒙开发实战内容,供开发者查阅资料、交流技术、分享工程实践

更多推荐