当前位置: 首页 > 知识库问答 >
问题:

如何基于一个字段对数据列表进行分组

江育
2023-03-14

我有一个自定义类数据列表,我想根据一个字段和值应该是另一个字段对它们进行分组。以下面的例子为例。

List<Student> list = new ArrayList<>();
list.add(new Student(1001, "Class 1", "Jon"));
list.add(new Student(1002, "Class 1", "Eliana"));
list.add(new Student(1003, "Class 2", "Piter"));
list.add(new Student(1004, "Class 3", "Joy"));
list.add(new Student(1005, "Class 2", "Anderson"));
list.add(new Student(1006, "Class 1", "Ram"));
list.add(new Student(1007, "Class 1", "Mohan"));

现在我想基于类对这些数据进行分组。预期的输出应该是一个映射,其中包含作为类的键和作为学生姓名列表的值。

{"Class 1" -> ["Jon", "Eliana", "Ram", "Mohan"]}
{"Class 2" -> ["Piter", "Anderson"]}
{"Class 3" -> ["Joy"]}

我的代码是这样的:

list.stream().collect(Collectors.groupingBy(Students::getClass));

共有1个答案

宋安晏
2023-03-14

从上面的评论部分可以这样做:

Map<EligibilityRequest, List<List<String>>> result = 
  list.stream()
    .collect(Collectors.groupingBy(Student::getClass,
      Collectors.mapping(Student::getName,  toList())
    ));
 类似资料:
  • 我有一个包含下一个数据的ArrayList:(int)、(int)、(int)、(String)。我按字段对此数组进行排序。如果长度与提交的相等,我如何赋予优先级(优先级将具有具有水平位置的长度)。例如,给定输入: 输出应为: 以下是我所拥有的:

  • 我有一个对象的arraylist,其中有一个字段“name”,还有一个名称列表。我必须从列表中选择包含任何名称的所有对象。如何在java中最有效地实现这一点。任何代码片段都将受到高度赞赏。 例子: 让类名为 A由id、name、subject等字段组成。 那么让我们假设我有一个列表 所以假设我有第二个列表 因此,我只想从objectsA列表中选择那些名称字段由名称列表中的名称组成的对象,也就是说,

  • 由于SomeView是SQL视图,所以数据库中没有定义外键约束。不能将导航与QueryType一起使用。所以用户和SomeView之间的映射是不可能的,或者我不知道该怎么做。 最终的API数据输出应该是以下格式。

  • 我有一个pandas数据帧像: 我想按第一列进行分组,并将第二列作为行中的列表:

  • 我有以下Java POJO 如何实现在游戏对象列表中确定重复字段的功能? 例如,当两个游戏有相同的开始日期? 我以前使用过,但仅在根据最早日期等对对象进行排序时使用过,但它能否用于对重复项进行排序?

  • 我看到过其他几个类似于这个问题的问题,但我还没有找到任何解决我的问题的方法。