Вот способ подсчитать все Submission
, сделанные studentSubmissions
для assignmentid1
.
long a = assignmentMap.entrySet().stream().
filter(e -> e.getKey().equals("assignmentid1")).
flatMap(i -> i.getValue().entrySet().stream()).
filter(k -> k.getKey().equals("studentSubmissions")).
flatMap(j -> j.getValue().stream()).
count();
Если вы удалите оба фильтра, вы получите количество всех Submisson
для каждого типа Submission
для каждого assignment
.
Тем не менее, я хотел бы сделать комментарий относительно вложенности Collection
(здесь List
) внутри Map
внутри другого Map
. Вложенность в такой степени имеет следующие минусы:
- Читаемость кода серьезно повреждена.
- Операции потока должны быть излишне сложными, так как вы можете наблюдать решение, просто посчитав список
Submission
.
Чтобы избежать такого вложения, вы должны пересмотреть свой Class
дизайн. Дифференцирование типа Submission
на основе значения String
может быть не лучшим выбором. Вы можете перейти на Child
классы для StudentSubmission
и InstructorSubmission
, которые расширят Submission
родительский класс.