cmo*_*dha 2 java collections java-8 java-stream
我想使用流从类型B创建类型A的集合.
假设我有两个班级
Class Employee{
String firstName;
String lastName;
int age;
String id;
String email;
double salary;
}
Class Person {
String firstName;
String lastName;
String email;
}
Run Code Online (Sandbox Code Playgroud)
要从Employee的集合创建Person的集合,我写下面的代码
public static List<Person> createPersonsFromEmployees(List<Employee> employees) {
List<Person> persons = new ArrayList<>();
employees.stream().filter(Object :: nonNull)
.forEach(e -> {
persons.add(new Person(e.getFirstName(),
e.getLastName(),
e.getEmail());
};)
return persons;
}
Run Code Online (Sandbox Code Playgroud)
目前,这段代码有效.但我想知道,想知道是否有更好的方法来创建的集合Person,从Employee没有使用forEach.
这是一个更清洁的方式.在流中使用.forEach()表示可能有更好的方法来使用Stream.流本来是功能性的,他们试图远离可变性.
public static List<Person> createPersonsFromEmployees(List<Employee> employees)
Function<Employee, Person> employeeToPerson = e -> new Person(e.getFirstName, e.getLaseName(), e.getEmail());
return employees.stream()
.filter(Object :: nonNull)
.map(employeeToPerson)
.collect(Collectors.toList());
}
Run Code Online (Sandbox Code Playgroud)