Kotliní standardní klihovna nabízí funkce pro groupování elementů kolekcí. Základní groupBy()
funkce přijímá lambdu a vrací mapu. V této mapě je každý klíč (key) výsledkem lambda funkce a hodnota (value) je seznam elementů z kolekce podle daného klíče.
val names = listOf("Petr", "Jan", "Marie", "Matouš", "Petra", "Soňa", "Patricie")
println(names.groupBy { it.first() })
println(names.groupBy(keySelector = { it.first() }))
// {P=[Petr, Petra, Patricie], J=[Jan], M=[Marie, Matouš], S=[Soňa]}
println(names.groupBy { it.length })
println(names.groupBy(keySelector = { it.length }))
// {4=[Petr, Soňa], 3=[Jan], 5=[Marie, Petra], 6=[Matouš], 8=[Patricie]}
println(names.groupBy(keySelector = { it.length }, valueTransform = { it.toUpperCase() }))
// {4=[PETR, SOŇA], 3=[JAN], 5=[MARIE, PETRA], 6=[MATOUŠ], 8=[PATRICIE]}
println(names.groupBy(keySelector = { it.substring(0, 2) }, valueTransform = { if (it.length == 4) it.toUpperCase() else it.toLowerCase() }))
// {Pe=[PETR, petra], Ja=[jan], Ma=[marie, matouš], So=[SOŇA], Pa=[patricie]}
Číst dálFunkce groupBy v Kotlinu