У меня есть объект Student
public class Student {
protected final String name;
protected final String[] classes;
public Student(String name; String[] classes) {
this.name = name;
this.classes = classes;
}
//getter & setters
}
Student a = new Student("A", new String[]{"math", "physics"});
Student b = new Student("B", new String[]{"math", "chemistry"});
Student c = new Student("C", new String[]{"physics", "chemistry"});
List<Student> students = new ArrayList<Student>();
Я хочу посчитать, сколько учеников имеют определенный класс. Нечто похожее
math: 2
physics: 2
chemistry: 2
Я пытался использовать stream
, но это все еще массив строк, поэтому неправильный ответ, интересно, могу ли я получить одну строку? Спасибо.
Map<String[], Long> map = students.stream()
.collect(Collectors.groupingBy(Student::getClasses,
Collectors.counting()))