data class Student(val name: String, val subjects: List<String>)
val students = listOf(
Student("Kim", listOf("Math", "English")),
Student("Lee", listOf("English", "Science"))
)
val subjectToStudents = students
.flatMap { student -> student.subjects.map { subject -> subject to student.name } }
.groupBy({ it.first }, { it.second })
println(subjectToStudents)
/*
{
Math=[Kim],
English=[Kim, Lee],
Science=[Lee]
}
*/
