📌  相关文章
📜  在 kotlin 中对自定义对象列表进行排序(1)

📅  最后修改于: 2023-12-03 15:23:11.935000             🧑  作者: Mango

在 Kotlin 中对自定义对象列表进行排序

在 Kotlin 中,我们可以轻松地对自定义对象列表进行排序。这个过程需要实现比较器函数,然后将比较器函数传递给排序函数。

实现比较器函数

比较器函数需要实现 Comparator 接口,该接口包含一个 compare 函数,我们需要在这个函数中定义自定义对象的比较规则。

让我们通过一个简单的例子来演示如何实现比较器函数:

data class Person(val name: String, val age: Int)

fun main() {
    val personList = listOf(
        Person("Alice", 28),
        Person("Bob", 21),
        Person("Charlie", 35)
    )

    val sortedList = personList.sortedWith(compareBy { it.age })
    sortedList.forEach { println(it) }
}

在这个例子中,我们定义了一个 Person 类来存储人员信息,包括姓名和年龄。接着,我们创建了一个人员列表,并使用 sortedWith 函数对列表进行排序。

compareBy 函数接受一个 lambda 表达式作为参数,该 lambda 表达式返回一个用于比较的属性。在这个例子中,我们使用 it.age 作为比较属性,表示按年龄从小到大排序。

注意,我们可以使用 compareByDescending 函数来表示按照相反的顺序排序。

传递比较器函数

除了使用 sortedWith 函数外,我们还可以使用 sortedBy 函数,该函数接受一个 lambda 表达式来表示比较属性。在这种情况下,我们需要将比较器函数作为第二个参数传递给 sortedBy 函数。

data class Person(val name: String, val age: Int)

fun main() {
    val personList = listOf(
        Person("Alice", 28),
        Person("Bob", 21),
        Person("Charlie", 35)
    )

    val sortedList = personList.sortedBy({ it.age }, compareBy { it.name })
    sortedList.forEach { println(it) }
}

在这个例子中,我们使用 sortedBy 函数来排序人员列表,显示先按照年龄排序,然后按照姓名排序。

结论

在 Kotlin 中,对自定义对象列表进行排序可以使用 sortedWithsortedBy 函数。我们需要实现一个比较器函数,并将其传递给排序函数。比较器函数应该实现 Comparator 接口,用于定义自定义对象的比较规则。