java list 取多个字段 拼成新的list
  Hu7dgzpF3r8x 2023年11月02日 88 0

Java List 取多个字段拼成新的 List

在 Java 开发中,经常会遇到需要从一个 List 中取出多个字段,并将这些字段拼成一个新的 List。本文将介绍如何使用 Java 代码实现这个功能,并提供示例代码。

1. 问题描述

假设有一个 List,其中包含了多个对象,每个对象都有多个字段。我们希望从这个 List 中选择特定的字段,并将这些字段拼接成一个新的 List。

2. 解决方案

为了解决这个问题,我们可以使用 Java 8 的 Stream API 来处理 List 中的对象。首先,我们需要定义一个实体类来表示每个对象,然后通过 Stream API 中的 map() 方法来提取特定的字段,并将它们拼接成一个新的 List。

下面是一个示例实体类 Person,其中包含了两个字段 nameage

public class Person {
    private String name;
    private int age;

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

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }
}

接下来,我们创建一个包含多个 Person 对象的 List:

List<Person> persons = new ArrayList<>();
persons.add(new Person("Alice", 25));
persons.add(new Person("Bob", 30));
persons.add(new Person("Charlie", 35));
persons.add(new Person("David", 40));

现在,我们可以使用 Stream API 来提取 name 字段,并将它们拼接成一个新的 List。下面是示例代码:

List<String> names = persons.stream()
    .map(Person::getName)
    .collect(Collectors.toList());

在上述代码中,我们使用 stream() 方法将 List 转换为一个 Stream 对象,然后使用 map() 方法提取每个 Person 对象的 name 字段。最后,使用 collect() 方法将结果收集到一个新的 List 中。

如果我们需要同时提取多个字段,我们可以使用 map() 方法返回一个包含多个字段的对象。然后,我们可以通过自定义的方法将这些字段拼接成一个新的对象。下面是示例代码:

public class PersonInfo {
    private String name;
    private int age;

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

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }
}

List<PersonInfo> personInfos = persons.stream()
    .map(person -> new PersonInfo(person.getName(), person.getAge()))
    .collect(Collectors.toList());

在上述代码中,我们定义了一个新的实体类 PersonInfo,它包含了和 Person 类相同的字段。然后,我们通过自定义的方法使用 map() 方法来创建新的 PersonInfo 对象,其中包含了 Person 对象的 nameage 字段。最后,我们使用 collect() 方法将结果收集到一个新的 List 中。

3. 示例

下面是一个完整的示例代码,展示了如何使用 Java 代码将 List 中的多个字段拼接成一个新的 List:

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

public class Main {
    public static void main(String[] args) {
        List<Person> persons = new ArrayList<>();
        persons.add(new Person("Alice", 25));
        persons.add(new Person("Bob", 30));
        persons.add(new Person("Charlie", 35));
        persons.add(new Person("David", 40));

        List<String> names = persons.stream()
                .map(Person::getName)
                .collect(Collectors.toList());

        System.out.println(names);

        List<PersonInfo> personInfos = persons.stream()
                .map(person -> new PersonInfo(person.getName(), person.getAge()))
                .collect(Collectors.toList());

        System.out.println(personInfos);
    }
}

class Person {
    private String name;
    private int age;

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

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }
}

class PersonInfo {
    private String name;
    private int age;

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

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  2Vtxr3XfwhHq   2024年05月17日   54   0   0 Java
  Tnh5bgG19sRf   2024年05月20日   109   0   0 Java
  8s1LUHPryisj   2024年05月17日   46   0   0 Java
  aRSRdgycpgWt   2024年05月17日   47   0   0 Java
Hu7dgzpF3r8x