java stream map转换类型后获取某个属性值
时间: 2023-11-18 15:27:13 浏览: 86
java8新特性之stream的collect实战教程
5星 · 资源好评率100%
假设你有一个`List`,其中包含了一些对象,每个对象都有一个`name`属性和一个`age`属性,你想要将这个`List`中的对象转换为另一种类型的对象,并且只保留`name`属性,然后获取这个新对象的`name`属性值。
你可以使用`Stream`的`map`方法将原始`List`中的对象转换为新对象,然后使用`map`方法再次将新对象转换为`String`类型的`name`属性值,最后使用`findFirst`方法获取第一个值,代码如下:
```java
List<Person> persons = Arrays.asList(
new Person("Alice", 20),
new Person("Bob", 30),
new Person("Charlie", 40)
);
String name = persons.stream()
.map(person -> new Name(person.getName()))
.map(Name::getName)
.findFirst()
.orElse("");
```
其中`Person`类和`Name`类的定义如下:
```java
class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
}
class Name {
private String name;
public Name(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
```
在上述代码中,`map(person -> new Name(person.getName()))`将`Person`对象转换为`Name`对象,只保留了`name`属性。然后`map(Name::getName)`将`Name`对象转换为`String`类型的`name`属性值。最后,`findFirst`方法获取第一个值,如果`Stream`为空则返回空字符串。
阅读全文