Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
301 views
in Technique[技术] by (71.8m points)

kotlin - How can I group a list based on a similar value

I have a list of highscores, and I would like to group it into lists for each category the highscores belong to.

My data classes look like this

data class HighScore(val word: Word)
data class Word(val category: String)

I was doing something like this.

val highScores = listOf<HighScore>(...)
val groupedScores = highScores.groupBy{ it:HighScore
    it.word.category
}

What I am trying to do is to get all the high-scores with a similar category and put them into separate lists, I am sure there must be a function for that in kotlin, but I only seem to be able to find tutorials that explains how to group lists by number values and not predicates.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

You found the right groupBy function that takes a predicate, but your lambda syntax is wrong.

Either add an arrow:

val groupedScores = highScores.groupBy{ it:HighScore ->
    it.word.category
}

or remove the parameter entirely to use the implicit single parameter it:

val groupedScores = highScores.groupBy{
    it.word.category
}

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...