Schools
이 많고 Students
이 많고 Classes
이 많은 SchoolDistrict
이 있다고 가정 해 봅시다.컬렉션이있는 컬렉션의 컬렉션 수를 계산하려고합니다
나는 SchoolDistrict가 주어진 클래스의 수를 계산하고 싶습니다.
자바 7 방법과 같이 될 것이다 :
Integer classCount = 0;
for (School school : schoolDistrict)
{
for (Student student : school.getStudents())
{
classCount += student.getClasses().size();
}
}
나는 자바 (8)가 눈에 좀 더 쉽게 이런 종류의 일을 해야하는 스트림을 제공 것을 알고있다.
하지만 어떻게해야하는지 알아내는 데 어려움이 있습니다.
수취인?
EDIT : 누군가 이것을 this post의 복제물로 표시했는데, 그 예가 단지 2 단계로 깊게 나왔다는 것이 나는 믿을 수 없습니다 (국가 별). 내 질문은 네 단계로 깊어가는 문제와 관련이 있습니다 (학교에서 학생을위한 학교에서 학생까지)
@azurefrog 거의,하지만 내 컬렉션 쿼리를 사용하여 한 레벨 더 깊숙이 들어가야합니다. – Trevor
다음과 같이 시도해보십시오. : schoolDistrict.stream(). mapToInt (school -> school.getStudents(). getClasses(). size)) .sum();' – Orin
@ Orin2005 getStudents(). getClasses()'getStudents()'는 콜렉션을 반환하므로'Class'es를 포함하지 않습니다. – Trevor