我知道在 java 中我可以对如下项目进行分组:
System.out.println(Arrays.asList(1,2,3,3,4,2,2).stream()
.collect(Collectors.groupingBy(Function.identity(),
Collectors.counting())));
这将返回:
{1=1, 2=3, 3=2, 4=1}
但是我有以下代码:
public static void main(String[] args) {
final int NO_OF_STUDENTS = 10000;
Student[] students = createStudents(NO_OF_STUDENTS);
}
这里我有一个学生数组,其中包含许多学生对象,每个学生都有 .getGrade() 方法。
我正在尝试做类似的事情:
System.out.println(Arrays.asList(students.getGrade()).stream()
.collect(Collectors.groupingBy(Function.identity(),
Collectors.counting())));
我知道学生数组本身没有 .getGrade()
方法,但它的元素有。我想要的是我可以将所有学生的成绩从 students
数组传递到 Arrays.asList()
方法,我不知道该怎么做.
最佳答案
为什么不使用 map方法?
System.out.println(Arrays.stream(students)
.map(Student::getGrade)
.collect(Collectors.groupingBy(Function.identity(), Collectors.counting())));
在这里,我将学生流映射到成绩流,然后对它们进行分组。
我认为指出您不需要使用 Arrays.asList 是件好事。为了这。您可以直接使用 Arrays.stream 创建学生流数组.
关于java - 在 Java 中对项目进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46653859/