SchoolDistrict
という数値がSchools
で、数値がClasses
である数値がStudents
であるとします。コレクション内のコレクションの数をストリーム付きのコレクションでカウントしたい
私は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つのレベルの深さしかなかったとは思いません。私の質問は、4つのレベルに深刻な問題に関連しています(授業から学生への学校から学校へ)
@azurefrogほとんどの場合、私のコレクションのクエリで一層深くする必要があります – Trevor
次のようなものを試してみてください: 'schoolDistrict.stream()。mapToInt(school - > school.getStudents()。getClasses()。size )).sum(); ' – Orin
@ Orin2005 getStudents()。getClasses()' getStudents()は 'Class'esを含んでいないCollectionを返します。 – Trevor