Kotlin如何对自定义Edge类组成的mutableList按weight属性升序排序
Kotlin 按对象属性排序列表解决方案
Kotlin 标准库已经提供了对应的内置排序函数,不需要手动实现排序算法。
两种常用实现方式
原地修改原列表排序:直接调用可变列表的
sortBy扩展方法,指定按weight属性排序即可,代码如下:Sides.sortBy { it.weight }执行后原
Sides列表就会变成你需要的按weight升序排列的结果。不修改原列表,返回新的排序后列表:使用
sortedBy方法:val sortedSides = Sides.sortedBy { it.weight }该方法不会改动原
Sides列表,返回的新列表sortedSides为升序排列结果。
如果需要按weight降序排序,替换成sortByDescending或者sortedByDescending方法即可。
完整示例代码
// Kotlin 类默认是public修饰,可省略public关键字 class Edge(val v: Int, val u: Int, val weight: Double) fun main() { var Sides = mutableListOf<Edge>( Edge(4, 8, 4.1), Edge(20, 9, 7.5), Edge(5, 4, 0.0) ) // 按weight升序排序 Sides.sortBy { it.weight } // 输出验证 Sides.forEach { println("Edge(${it.v}, ${it.u}, ${it.weight})") } }
输出结果
Edge(5, 4, 0.0) Edge(4, 8, 4.1) Edge(20, 9, 7.5)
内容的提问来源于stack exchange,提问作者vale383
相关产品推荐
相关产品推荐

