JAVA 对象类型list转换为多个属性的对象list

在JAVA编程中,经常会遇到将一个对象类型的list转换为多个属性的对象list的需求。例如,我们有一个存储学生信息的list,每个学生对象包含姓名、年龄和班级三个属性,我们希望将这个list转换为一个新的list,每个元素是一个包含姓名、年龄和班级属性的对象。本文将向大家介绍一种实现这个转换的方法。

前提条件

在开始之前,我们需要先定义一个学生对象,包含姓名、年龄和班级三个属性,并为该对象编写相应的getter和setter方法。

public class Student {
    private String name;
    private int age;
    private String className;

    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;
    }

    public String getClassName() {
        return className;
    }

    public void setClassName(String className) {
        this.className = className;
    }
}

转换方法

我们可以使用JAVA的Stream API来实现这个转换。Stream API提供了一种更加简洁和优雅的方式来处理集合数据。

首先,我们需要将学生信息的list转换为一个Stream对象,然后使用map方法对每个学生对象进行转换,并返回一个新的Stream对象。在map方法中,我们可以使用Lambda表达式来定义转换的逻辑。最后,我们使用collect方法将Stream对象转换为一个新的list。

下面是转换的代码示例:

import java.util.List;
import java.util.stream.Collectors;

public class Main {
    public static void main(String[] args) {
        // 创建一个存储学生信息的list
        List<Student> students = createStudents();

        // 将学生信息的list转换为多个属性的对象list
        List<Info> infos = students.stream()
                .map(student -> {
                    Info info = new Info();
                    info.setName(student.getName());
                    info.setAge(student.getAge());
                    info.setClassName(student.getClassName());
                    return info;
                })
                .collect(Collectors.toList());

        // 打印转换结果
        for (Info info : infos) {
            System.out.println(info.getName() + " " + info.getAge() + " " + info.getClassName());
        }
    }

    private static List<Student> createStudents() {
        // 创建几个学生对象并添加到list中
        List<Student> students = new ArrayList<>();
        Student student1 = new Student();
        student1.setName("张三");
        student1.setAge(18);
        student1.setClassName("一班");
        students.add(student1);

        Student student2 = new Student();
        student2.setName("李四");
        student2.setAge(19);
        student2.setClassName("二班");
        students.add(student2);

        Student student3 = new Student();
        student3.setName("王五");
        student3.setAge(20);
        student3.setClassName("三班");
        students.add(student3);

        return students;
    }
}

class Info {
    private String name;
    private int age;
    private String className;

    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;
    }

    public String getClassName() {
        return className;
    }

    public void setClassName(String className) {
        this.className = className;
    }
}

在上面的例子中,我们首先创建了一个存储学生信息的list,并通过createStudents方法初始化了几个学生对象。接下来,我们使用Stream API将学生信息的list转换为多个属性的对象list。最后,我们通过遍历新的list,将转换结果打印出来。

运行结果

运行上述代码,将会得到如下输出:

张三 18 一班
李四 19 二班
王五 20 三班

总结

通过JAVA的Stream API,我们可以很方便地将一个对象类型的list转换为多个属性的对象list。使用Stream API可以让我们的代码更加简洁和易读,提高开发效率。

希望本文对你理解JAVA对象类型list转换为多个属性