java - 如何在 lambda 表达式中从另一个对象设置一个对象

标签 java lambda java-8 java-stream

我正在从 DB 获取经理列表,现在我必须将此列表的每个对象填充到另一个对象,即员工,并将其作为列表 (employeeList) 返回给它的调用函数。 Manager 和 Employee 都包含相同的字段。我必须使用流使用 lambda 表达式来实现这一点。

员工.java

public class Employee {
private String name;
private String designation;
private String active;

public String getActive() {
    return active;
}
public void setActive(String active) {
    this.active = active;
}
public String getName() {
    return name;
}
public void setName(String name) {
    this.name = name;
}
public String getDesignation() {
    return designation;
}
public void setDesignation(String designation) {
    this.designation = designation;
}}

管理器.java

public class Manager {
private String name;
private String designation;
private String active;
public String getActive() {
    return active;
}
public void setActive(String active) {
    this.active = active;
}
public String getName() {
    return name;
}
public void setName(String name) {
    this.name = name;
}
public String getDesignation() {
    return designation;
}
public void setDesignation(String designation) {
    this.designation = designation;
}}

ComponentImpl.java

public class ComponentImpl {

public List<Employee> catchAllEmployess () {

    List<Manager> managers = DbOperation.collectManagers(2);
    List<Employee> employees = new ArrayList<>();

    for (Manager manager : managers) {
        Employee employee = new Employee();
        employee.setName(manager.getName());
        employee.setDesignation(manager.getDesignation());
        employee.setActive(manager.getActive());
        employees.add(employee);
    }
    return employees;
}

最佳答案

您可以通过在 Employee 类中包含一个构造函数来简化表达式

Employee(String name, String designation, String active) {
        this.name = name;
        this.designation = designation;
        this.active = active;
    }

然后可以用作

List<Employee> employees = managers.stream()
                .map(manager -> new Employee(manager.getName(), manager.getDesignation(), manager.getActive()))
                .collect(Collectors.toList());

关于java - 如何在 lambda 表达式中从另一个对象设置一个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52792518/

相关文章:

java - 串行 Steam 的性能、内部工作和执行顺序

multithreading - Javafx从线程Java 8更新UI

java和javascript回调比较

c++ - 快速排序 C++ 中的 Lambda

lambda - Aspectj:lambda 表达式的切入点

debugging - 调试 : Couldn't match expected type ‘GHC.Types.Bool’ with actual type ‘Bool’

java - Wildfly 18 - 如何在 WFLYEE0042 上的 server.log 中查看堆栈跟踪 - 无法构造组件实例,java.lang.NullPointerException

java - 从错误的线程异常中调用 Android

java - 在Hadoop Mapreduce中将行输出到Cassandra

java-8 - Jahia 7 与 Oracle JDK 8 兼容吗