I'm trying to make my own "Facebook reaction bar" and I got into a problem, I need to sort a list of objects based in its sublist method size, let me explain!
I have a ReactionModel which has a property "usernames" which is a List of Strings of usernames of those users that used it.
I have a list of ReactionModel which represent the reactions, for example this:
val reactionsList: List<ReactionModel> = listOf(
ReactionModel(listOf("a","b","c")),
ReactionModel(listOf("z")),
ReactionModel(listOf("f","d"))
)
In this case the first one is the largest, after that the third one and finally the second one.
I need to sort the reactionList and got a decreasing of it based on the size of usernames property.
Input:
ReactionModel(listOf("a","b","c")),
ReactionModel(listOf("z")),
ReactionModel(listOf("f","d"))
Output:
ReactionModel(listOf("z")),
ReactionModel(listOf("f","d")),
ReactionModel(listOf("a","b","c"))
I tried using forEach's but without success. I found some question here but is comparing just two list. Hope to find any answer, thanks for your time!!
Edit: Is for Android, so the answer can be in Java or Kotlin
CodePudding user response:
With Kotlin, you can do it using single line,
reactionsList.sortedByDescending { it.{getYourListHere}.size }
CodePudding user response:
sortedBy
can be used for this, I'm assuming the name of the string
list in ReactionModel
is stringList
.
val sortedList = reactionsList.sortedBy {
it.stringList.size
}
sortedBy
doesn't change the existing list
, but returns the sorted
list.