Stream作为Java 8的一大特点,是对集合对象功能的增强,***.stream().map(...).collect(Collectors.toList())中,***需要是一个List类型的对象,
有实体类Person和Dto类PersonDto如下
public class Person {
private String name;
private Integer age;
private String gender;
private String hobby;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public String getHobby() {
return hobby;
}
public void setHobby(String hobby) {
this.hobby = hobby;
}
}
public class PersonDto {
private String name;
private Integer age;
private String gender;
private List<String> hobby;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public List<String> getHobby() {
return hobby;
}
public void setHobby(List<String> hobby) {
this.hobby = hobby;
}
}
自定义映射函数,实现Person类与PersonDto类之间的相互映射
public class StreamMap {
public void Test1(List<Person> person){
List<PersonDto> personDto = person.stream().map(StreamMap::convertPersonToPersonDto).collect(Collectors.toList());
List<Person> personAfter = personDto.stream().map(StreamMap::convertPersonDtoToPerson).collect(Collectors.toList());
}
public static Person convertPersonDtoToPerson(PersonDto personDto){
Person person = new Person();
person.setName(personDto.getName());
person.setAge(personDto.getAge());
person.setGender(personDto.getGender());
StringBuilder sb = new StringBuilder("[");
for(int i = 0; i < personDto.getHobby().size(); i++){
sb.append(personDto.getHobby().get(i)+",");
}
sb.append("]");
person.setHobby(sb.toString());
return person;
}
public static PersonDto convertPersonToPersonDto(Person person){
PersonDto personDto = new PersonDto();
personDto.setName(person.getName());
personDto.setAge(person.getAge());
personDto.setGender(person.getGender());
List<String> hobby = new ArrayList<>();
String[] temp = person.getHobby().split(",");
for(int i = 0; i < temp.length; i++){
hobby.add(temp[i]);
}
personDto.setHobby(hobby);
return personDto;
}
}