Java List 中的对象转换

在Java编程中,我们经常需要处理集合(Collection),尤其是List这种类型。List是一个有序的集合,可以包含重复的元素。在实际开发过程中,我们可能会遇到需要将List中的元素转换成另一种类型的情况。本文将介绍如何在Java中实现List中对象的转换,并提供代码示例。

问题背景

假设我们有一个List,它包含了Person对象的集合。现在我们需要将这个List中的所有Person对象转换成Employee对象的集合。PersonEmployee是两个不同的类,但Employee继承自Person

类图

首先,我们用Mermaid语法来描述PersonEmployee的类关系:

classDiagram
    class Person {
        +String name
        +int age
    }
    class Employee {
        +String department
        _inherits Person
    }

序列图

接下来,我们用Mermaid语法来描述转换过程的序列图:

sequenceDiagram
    participant List as PersonList
    participant EmployeeList
    participant Person
    participant Employee

    PersonList->>EmployeeList: convert(List<Person> persons)
    loop for each Person in List
        Person->>Employee: new Employee()
        EmployeeList->>EmployeeList: add(Employee)
    end

代码示例

以下是具体的Java代码实现:

import java.util.ArrayList;
import java.util.List;

// Person 类
class Person {
    private String name;
    private int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    // getters and setters
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

// Employee 类,继承自 Person
class Employee extends Person {
    private String department;

    public Employee(String name, int age, String department) {
        super(name, age);
        this.department = department;
    }

    // getters and setters
    public String getDepartment() {
        return department;
    }

    public void setDepartment(String department) {
        this.department = department;
    }
}

public class ListConversionExample {
    public static void main(String[] args) {
        List<Person> personList = new ArrayList<>();
        personList.add(new Person("Alice", 30));
        personList.add(new Person("Bob", 25));

        List<Employee> employeeList = convertToEmployeeList(personList);

        for (Employee emp : employeeList) {
            System.out.println("Employee Name: " + emp.getName() + ", Age: " + emp.getAge());
        }
    }

    public static List<Employee> convertToEmployeeList(List<Person> persons) {
        List<Employee> employeeList = new ArrayList<>();
        for (Person person : persons) {
            Employee employee = new Employee(person.getName(), person.getAge(), "Sales");
            employeeList.add(employee);
        }
        return employeeList;
    }
}

结语

在Java中,将List中的对象转换成另一种类型的对象是一个常见的需求。通过继承和多态,我们可以轻松地实现这一目标。本文提供了一个简单的示例,展示了如何将Person对象的List转换成Employee对象的List。希望这能帮助你更好地理解Java中的集合操作和对象转换。