gpt4 book ai didi

java - 按属性隔离列表

转载 作者:行者123 更新时间:2023-12-04 20:39:09 24 4
gpt4 key购买 nike

我们有一份属于各个年级的学生名单 - List<Student> .

Student {

String name;
..........
..........
String grade;

}

在处理列表时,必须将其划分为等级。
该方法的最终输出将是一个等级列表 - 等级如下:
Grade{
String grade;
List<Student> students;
}

当前的方法是构建一个中间图 Map<String,List<student>> ,通过迭代学生。
然后,通过从 map 创建等级实例将中间 map 转换为列表。
有没有更好的方法 - 涉及更少的迭代,因为学生人数将有数千人。

返回类型不是一个选项——我们使用的是 Java 8。

最佳答案

我认为使用 toMap()具有合并功能的收集器更好。

List<Grade> grades = new ArrayList<>(list.stream()
.collect(Collectors
.toMap(Student::getGrade, YOUR_CLASS::value, YOUR_CLASS::merge)).values());


private static Grade value(Student s) {
return new Grade(s.getGrade(), new ArrayList<>(Collections.singleton(s)));
}

private static Grade merge(Grade g1, Grade g2) {
g1.getStudents().addAll(g2.getStudents());
return g1;
}

关于java - 按属性隔离列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59853376/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com