kotlin: 排序: sortBy/sortedBy函数

一,功能

sortBy

  • 就地排序‌:直接修改原列表,保持元素相对顺序(稳定性排序)。 ‌
  • 参数‌:接收一个选择器函数(如(T) -> R),用于提取排序依据的属性。 ‌
  • 示例‌:按字符串长度排序:list.sortBy{it.length}。 ‌
  • sortByDescending(): 使用倒序

sortedBy

  • 返回新列表‌:生成一个已排序的新列表,保持原列表不变。
  • 参数‌:与sortBy相同,但返回的是排序后的副本。
  • 示例‌:按首字母排序:list.sortedBy{it.first()}。 ‌
  • sortedByDescending(): 使用倒序

二,例子:改变列表自身顺序

代码:

     //处理按钮点击事件
        binding.button1.setOnClickListener {
            //在可变列表自身上排序
            val origins2 = mutableListOf("aaa", "c", "bb")
            println("未排序前:"+origins2)
            origins2.sortBy { it.length }
            println("排序后:"+origins2)
            origins2.sortByDescending { it.length }
            println("倒序排序后:"+origins2)

            //按特定属性排序
            val mapList = mutableListOf(1 to "A" , 2 to "B", 5 to "C", 3 to "D")
            println("排序前:"+mapList)
            mapList.sortBy { it.first }
            println("按first排序后:"+mapList) // [(1, A), (2, B), (3, D), (5, C)]
            mapList.sortBy { it.second }
            println("按second排序后:"+mapList) // [(1, A), (2, B), (5, C), (3, D)]
        }

运行结果:

image

三,例子:返回新列表

代码:

        //处理按钮点击事件
        binding.button2.setOnClickListener {

            val origins = listOf("aaa", "c", "bb")
            //按长度排序
            println("按长度排序后:"+origins.sortedBy { it.length }) //[c, bb, aaa]
            println("按长度倒排后:"+origins.sortedByDescending { it.length }) //[aaa, bb, c]

            //按特定属性排序
            val mapList = listOf(1 to "A" , 2 to "B", 5 to "C", 3 to "D")
            println("排序前:"+mapList)
            println("按first排序后:"+mapList.sortedBy { it.first }) // [(1, A), (2, B), (3, D), (5, C)]
            println("按second排序后:"+mapList.sortedBy { it.second }) // [(1, A), (2, B), (5, C), (3, D)]
        }

运行结果:

image

 

posted @ 2025-08-23 09:29  刘宏缔的架构森林  阅读(51)  评论(0)    收藏  举报