Предположим, у меня есть SchoolDistrict
, у которого много Schools
, у которого много Students
, у которых много Classes
.Я хочу рассчитать количество коллекций в коллекции, в коллекции с потоками
Я хочу рассчитать количество уроков, предоставленных SchoolDistrict.
Java-7 путь будет выглядеть примерно так:
Integer classCount = 0;
for (School school : schoolDistrict)
{
for (Student student : school.getStudents())
{
classCount += student.getClasses().size();
}
}
Я знаю, что Java 8 приносит потоки, которые, как предполагается, чтобы сделать такого рода вещи немного легче на глазах.
Но мне трудно понять, как это сделать.
Любые берущие?
EDIT: кто-то отметил это как дубликат this post. Я не верю, что этот пример прошел только на 2 уровнях (страны в регионы). Мой вопрос связан с проблемой, которая идет на четыре уровня в глубину (Школьные школы для учащихся до классов)
@azurefrog почти, но мне нужно идти на один уровень глубже с моим запросом на сбор – Trevor
Возможно, попробуйте что-то вроде этого: 'schoolDistrict.stream(). MapToInt (school -> school.getStudents(). GetClasses(). Size ()) .sum(); ' – Orin
@ Orin2005 вы не можете делать' getStudents(). getClasses() 'as' getStudents() 'возвращает коллекцию, которая в этом случае не содержит' Class'es. – Trevor