stream(四) 给数组内的对象赋值
Person数组,动态赋名字
package com.px;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;
public class Test {
public static void main(String[] args) {
Person person1 = new Person();
person1.setId(1L);
person1.setName("1");
Person person2 = new Person();
person2.setId(2L);
person2.setName("2");
Person person3 = new Person();
person3.setId(3L);
person3.setName("3");
List<Person> personList = new ArrayList<>();
personList.add(person1);
personList.add(person2);
personList.add(person3);
System.out.println("pre " + personList);
Person p1 = new Person();
p1.setId(1L);
p1.setName("老子");
Person p2 = new Person();
p2.setId(2L);
p2.setName("孔子");
Person p3 = new Person();
p3.setId(3L);
p3.setName("孟子");
List<Person> pArr = new ArrayList<>();
pArr.add(p1);
pArr.add(p2);
pArr.add(p3);
List<Person> pList = personList.stream().map(person -> {
Optional<Person> optionalPerson = pArr.stream().filter(p -> p.getId() == person.getId()).findFirst();
if (optionalPerson.isPresent()){
person.setName(optionalPerson.get().getName());
}
return person;
}).collect(Collectors.toList());
System.out.println("after " + pList);
}
}
@Data
class Person {
private Long id;
private String name;
}
