Java 8 列表复制

标签 java arraylist java-8

<分区>

我有一个员工对象

我无法更新员工对象

public class Employee {

    public Employee(Integer id, Integer age, String gender, String fName, String lName) {
        this.id = id;
        this.age = age;
        this.gender = gender;
        this.firstName = fName;
        this.lastName = lName;
    }

    private Integer id;
    private Integer age;
    private String gender;
    private String firstName;
    private String lastName;

我最初要设置员工列表,但想创建该列表的副本,然后对其进行更改。即使我正在创建新列表,它仍然会更改原始列表

public class ListTest {

    public static void main(String[] args) {

        List<Employee> employeeList = new ArrayList<>();
        Employee employee = new Employee(1, 1, "MALE", "TEST", "TEST");
        employeeList.add(employee);

        List<Employee> listTwo = new ArrayList<>();
        listTwo.addAll(employeeList);

        listTwo.get(0).setAge(11);

        System.out.println(employeeList.get(0).getAge());

    }
}

输出为 11。

有没有更简单的方法从原始列表克隆,任何更改不应应用于原始列表对象,而应仅应用于我创建的新列表

最佳答案

首先在您的 Employee 类中创建一个复制构造函数:

    public Employee(Employee employee) {
        this.id = employee.id;
        this.age = employee.age;
        this.gender = employee.gender;
        this.firstName = employee.firstName;
        this.lastName = employee.lastName;
    }

然后您可以使用 Java 8 流进行深度复制:

List<Employee> listTwo = employeeList.stream().map(item -> new Employee(item)).collect(Collectors.toList());

关于Java 8 列表复制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47833095/

相关文章:

java - 应用程序意外停止。由 : Java. lang.NullPointerException 引起的错误

java - Java 中的 File.createNewFile() 失败(Ubuntu 12.04)

java - 是否可以控制 Mixer.Info 字符集?

java - 无换行符和/或垂直方向的 FlowLayout

java - 流式传输文件并在读取后移动它们

java - 带耳机的蓝牙安卓服务器客户端

Java同一个List中的多个子类型和父类(super class)型

java - 有东西从我的 ArrayList 中删除了 3 个元素

java - 测试字符串是否是字符串列表的覆盖字符串

java - java.util.function.Function.identity 方法的实际用途是什么?