java stream 提取字段
时间: 2023-08-05 12:19:10 浏览: 335
可以使用 Java 8 中的 Stream API 和 Lambda 表达式来提取字段。假设有一个包含一些对象的列表,每个对象都有一个字段需要提取。例如,我们有一个列表 `List<Person>`,每个 `Person` 对象都有一个 `name` 字段,我们想要提取所有人的姓名。可以使用以下代码来提取:
```
List<Person> people = ... // 假设已有 Person 对象列表
List<String> names = people.stream()
.map(Person::getName)
.collect(Collectors.toList());
```
在上面的代码中,`map()` 方法将每个 `Person` 对象映射到其 `name` 字段,最终使用 `collect()` 方法将所有名称收集到一个列表中。
如果需要提取的字段不是一个简单的属性,而是需要进行一些计算或转换,可以在 `map()` 方法中使用 Lambda 表达式来进行处理。例如,假设我们有一个包含整数的列表,我们想要提取每个数字的平方根:
```
List<Integer> numbers = ... // 假设已有整数列表
List<Double> squareRoots = numbers.stream()
.map(n -> Math.sqrt(n))
.collect(Collectors.toList());
```
在上面的代码中,`map()` 方法将每个整数映射到它的平方根,最终使用 `collect()` 方法将所有平方根收集到一个列表中。
阅读全文