以下のラムダ式を使用して、学生のリストをグループ化できます。その結果、学生リストが「Department」でグループ化され、次に「gender」でグループ化されます。
Map<String, Map<String, List<Student>>> studentCatg = studentList.stream().collect(groupingBy(Student::getDepartment, groupingBy(Student::getGender)));
次に、上記のMAPから、特定の学部の学生を含む単一のリストを取得する必要があります。グループ化の逆はありますか?
あなたは得ることができEntrySet
、特定の部門の組み合わせMap<String, List<Student>>
にList<List<Student>>
することによりmap
、エントリの設定値にし、その後flatMap
にList<Student>
、このような何かを:
String department = "department name";
List<Student> students = studentCatg.get(department)
.values()
.stream()
.flatMap(Collection::stream)
.collect(Collectors.toList())
List<Student> students = studentCatg.values()
.stream()
.map(Map::values)
.flatMap(Collection::stream)
.flatMap(Collection::stream)
.collect(Collectors.toList());
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加