java stream流 实体转换 并修改其中某个属性的类型
时间: 2023-11-08 18:26:53 浏览: 258
java8 stream自定义分组求和并排序的实现
Java 8引入了Stream API,可以方便地进行集合操作,包括实体转换和属性修改等操作。以下是一个示例,将一个类型为`Person`的实体列表转换为类型为`User`的实体列表,并将其中的`age`属性从`int`类型转换为`String`类型:
```java
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
// 原始实体列表
List<Person> personList = new ArrayList<>();
personList.add(new Person("张三", 18));
personList.add(new Person("李四", 20));
personList.add(new Person("王五", 22));
// 使用Stream API进行实体转换和属性修改
List<User> userList = personList.stream()
.map(person -> new User(person.getName(), String.valueOf(person.getAge())))
.collect(Collectors.toList());
// 输出转换后的实体列表
userList.forEach(System.out::println);
}
}
// Person实体类
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;
}
}
// User实体类
class User {
private String name;
private String age;
public User(String name, String age) {
this.name = name;
this.age = age;
}
@Override
public String toString() {
return "User{" +
"name='" + name + '\'' +
", age='" + age + '\'' +
'}';
}
}
```
在上述代码中,我们通过调用`stream()`方法将原始的`personList`转换为Stream对象,并使用`map()`方法将每个`Person`实体转换为`User`实体,其中将`age`属性从`int`类型转换为`String`类型,最后使用`collect()`方法将转换后的`User`实体列表收集起来。最终输出转换后的实体列表。
需要注意的是,在修改属性类型时,需要使用相应的构造函数或setter方法对属性进行赋值。在本示例中,我们使用了`User`类的构造函数来对`name`和`age`属性进行赋值。
阅读全文