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;
}
经验分享 程序员 微信小程序 职场和发展