Java 8 меняет имя сотрудника с Роберта на Рональда и возвращает исходный список - PullRequest
0 голосов
/ 22 февраля 2019
Employee {
    String firstName;
     // Few other fields here
} 

e1.firstName = Robert
e2.firstName = Donald

В списке массивов есть 15 таких объектов

Я хочу изменить первоначальный список таким образом, чтобы

Где бы ни был firstName Роберт, он становится Рональдом, используя java 8 API

Ответы [ 4 ]

0 голосов
/ 26 февраля 2019
empList = (ArrayList<Employee>) empList.stream()
            .filter(emp -> emp.getFirstName().equalsIgnoreCase("Robert"))
            .peek(emp -> emp.setFirstName("Ronald"))
            .collect(Collectors.toList());

Если вы хотите изменить исходный список, назначьте собранный список исходному списку

0 голосов
/ 22 февраля 2019

Простая версия forEach (методы get / set игнорируются)

 list.forEach(e -> {
     if (e.firstName.equals("Robert")) {
        e.firstName = "Ronald";
     }
 });
0 голосов
/ 22 февраля 2019

Вы можете заполнить Map имен для преобразования в.

import java.util.*;
import java.util.stream.Collectors;

public class Employee {
    private String firstName;

    public String getFirstName() {
        return firstName;
    }
    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }
    public Employee(String firstName) {
        this.firstName = firstName;
    }
    @Override
    public String toString() {
        return String.format("Employee [firstName=%s]", firstName);
    }
    public static void main(String[] args) {
        Map<String, String> dict = new HashMap<String, String>() {
            private static final long serialVersionUID = -4824000127068129154L;
            {
                put("Robert", "Donald");
            }
        };
        List<Employee> employees = Arrays.asList("Adam", "James", "Robert").stream().map(Employee::new).collect(Collectors.toList());
        employees = employees.stream().map(emp -> {
            if (dict.containsKey(emp.getFirstName())) {
                emp.setFirstName(dict.get(emp.getFirstName()));
            }
            return emp;
        }).collect(Collectors.toList());
        employees.stream().forEach(System.out::println);
    }
}
0 голосов
/ 22 февраля 2019
Emplist.stream().map((emp)->{
If(emp.getName().equals("robert")){
emp.setName("ronald") ;
return emp;
}else{
return emp;}}).collect(Collectors.toList());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...