我有这样的字符串列表: -
listOf("abc", "a", "bb", "aa", "aaa", "bb", "a")
我想要这样的输出: -
listOf("a", "a", "aa", "bb", "bb", "aaa", "abc")
首先,我想按长度对列表进行排序,然后再按字母对该长度组进行排序。
到目前为止我尝试了下面的代码
fun main() {
val result = listOf("abc", "a", "bb", "aa", "aaa", "bb", "a").groupBy { it.length }
val valueList = ArrayList(result.values).flatMap { it.toList() }
println(valueList)
}
但我得到的结果如下
[abc, aaa, a, a, bb, aa, bb]
在@Sergey Lagutin的重复评论之后我也试过了
val sortedList = a.sortedWith(compareBy { it.length })
哪个没有返回所需的结果
val a = listOf("abc", "a", "bb", "aa", "aaa", "bb", "a")
a.sortedWith(compareBy({ it.length }, { it })) // [a, a, aa, bb, bb, aaa, abc]
你可以试试这种方式
val yourList = listOf("abc", "a", "bb", "aa", "aaa", "bb", "a")
val yourSortedList = yourList.sorted().sortedBy { it.length }
结果[a, a, aa, bb, bb, aaa, abc]
在集合上使用sortedWith
函数
val a = listOf("abc", "a", "bb", "aa", "aaa", "bb", "a")
val b = a.sortedWith(compareBy({ it.length }, { it }))
println(b)