如何在Kotlin中按首个元素对二维MutableList<Any>排序
在Kotlin中按二维可变列表的首个元素排序
要实现按子列表首个元素的字母顺序排序,Kotlin提供了简洁的API,以下分两种场景给出实现方案:
1. 原地修改原列表排序
使用sortBy函数直接对原可变列表进行排序,排序后原列表会被修改:
val books = mutableListOf<List<Any>>( listOf("abc","b",1), listOf("abb","y",2), listOf("abcl","i",3) ) // 按子列表首个字符串元素排序 books.sortBy { it[0] as String } println(books) // 输出:[[abb, y, 2], [abc, b, 1], [abcl, i, 3]]
2. 生成新的排序后列表(不修改原列表)
如果不想改动原列表,使用sortedBy函数返回一个新的排序后的列表:
val sortedBooks = books.sortedBy { it[0] as String } println(sortedBooks) // 输出结果与预期一致
优化建议
如果子列表的首个元素确定是字符串,建议声明更严谨的类型,避免类型转换操作:
// 明确子列表元素类型,首个元素为字符串 val books = mutableListOf( listOf("abc","b","1"), listOf("abb","y","2"), listOf("abcl","i","3") ) // 无需类型转换,直接按首个元素排序 books.sortBy { it[0] }
内容的提问来源于stack exchange,提问作者mdNJ
相关产品推荐
相关产品推荐

