可以使用Java 8的Stream API来实现对List进行分组和生成新的List。

假设我们有一个Student类,其中包含name和label两个属性,我们需要根据label进行分组,并将相同label对应的name以","分割生成一个新的List。

首先,我们需要导入相关的包:

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

然后,定义Student类:

class Student {
    private String name;
    private String label;

    public Student(String name, String label) {
        this.name = name;
        this.label = label;
    }

    public String getName() {
        return name;
    }

    public String getLabel() {
        return label;
    }
}

接下来,我们可以使用Stream API对List进行分组和生成新的List:

public class Main {
    public static void main(String[] args) {
        // 创建一个包含Student对象的List
        List<Student> students = new ArrayList<>();
        students.add(new Student("Alice", "A"));
        students.add(new Student("Bob", "B"));
        students.add(new Student("Cindy", "A"));
        students.add(new Student("David", "B"));
        students.add(new Student("Emily", "C"));
        students.add(new Student("Frank", "A"));

        // 根据label进行分组
        Map<String, List<Student>> groupedStudents = students.stream()
                .collect(Collectors.groupingBy(Student::getLabel));

        // 将相同label对应的name以","分割生成新的List
        List<String> newList = groupedStudents.values().stream()
                .map(group -> String.join(",", group.stream()
                        .map(Student::getName)
                        .collect(Collectors.toList())))
                .collect(Collectors.toList());

        // 输出新的List
        System.out.println(newList);
    }
}

运行以上代码,输出结果为:

[Alice,Cindy,Frank,Bob,David,Emily]

注意:生成的新List的顺序可能与原List中元素的顺序不一致,这是因为Stream API使用了并行处理的方式。如果需要保持顺序,可以使用LinkedHashMap来替代HashMap,或者使用Collectors.toMap方法,并指定LinkedHashMap作为其参数

java中list进行分组根据相同的数据将不同的label以分割生成一个新的list

原文地址: http://www.cveoy.top/t/topic/iC6H 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录