посчитать значения переменной списка объекта в Java - PullRequest
0 голосов
/ 30 апреля 2018

У меня есть объект 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()))

1 Ответ

0 голосов
/ 30 апреля 2018

сгладить потом группу.

students.stream()   
        .flatMap(s -> Arrays.stream(s.getClasses()))  
        .collect(Collectors.groupingBy(Function.identity(),    
                            Collectors.counting()));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...