java stream 提取字段
时间: 2023-08-05 13:19:07 浏览: 73
在 Java Stream 中提取字段可以使用 map 方法。假设我们有一个包含 Employee 对象的 List,其中 Employee 包含 id 和 name 两个字段,我们想要提取出所有 Employee 的 name 字段,可以使用以下代码:
```
List<Employee> employees = ... // 假设已经初始化了一个 List<Employee>
List<String> names = employees.stream()
.map(Employee::getName)
.collect(Collectors.toList());
```
其中 `map(Employee::getName)` 表示将每个 Employee 对象映射为其 name 字段,并返回一个包含所有 name 字段的 Stream。最后使用 `collect(Collectors.toList())` 将 Stream 转换为 List。
相关问题
java 集合提取某个字段成为新集合去重
你可以使用 Java 集合的 Stream API 来提取某个字段并去重。以下是一个示例代码:
```java
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
class Person {
private String name;
public Person(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
public class Main {
public static void main(String[] args) {
List<Person> personList = new ArrayList<>();
personList.add(new Person("Alice"));
personList.add(new Person("Bob")); personList.add(new Person("Alice"));
personList.add(new Person("Charlie"));
Set<String> uniqueNames = personList.stream()
.map(Person::getName)
.collect(Collectors.toSet());
System.out.println(uniqueNames);
}
}
```
上述代码首先定义了一个 `Person` 类,具有一个 `name` 字段和相应的 getter 方法。然后,在 `Main` 类中创建了一个 `personList` 列表,其中包含了一些 `Person` 对象。
接下来,通过使用 Stream API 中的 `map` 方法,我们将 `personList` 中的每个 `Person` 对象映射为其对应的 `name` 字段。然后,使用 `collect` 方法将这些字段收集到一个 Set 集合中,从而实现了去重。
最后,打印输出了得到的唯一姓名集合 `uniqueNames`。输出结果为:`[Alice, Bob, Charlie]`。
Java8 stream 分组提取 List 中元素的某一字段生成map
您好!感谢您对ChitGPT的使用和访问。对于您的问题,您可以使用Java8 stream的groupingBy收集器和mapping函数来实现。以下是示例代码:
```
Map<String, List<String>> map = list.stream()
.collect(Collectors.groupingBy(MyObject::getField,
Collectors.mapping(MyObject::getValue, Collectors.toList())));
```
其中,MyObject是List中的元素类型,getField和getValue是MyObject中的两个字段。
希望这可以帮助您!如果您还有其他问题,请随时问我。
阅读全文