我为Kotlinjs项目编写了一个漂亮的泛型函数,它将按参数对对象列表进行排序。
例如,book对象的列表如下所示
data class Book(val id: Int, val title: String, val year: Int, val authors:List<Author>)
将按泛型函数排序:
fun <T> sortColumnData(data: List<T>, direction: SORTDIRECTION, selector: KProperty1<T, Comparable<*>>) :List<T> {
val sortedData = when (direction) {
SORTDIRECTION.UP -> data.sortedWith(compareBy(selector))
SORTDIRECTION.DOWN -> data.sortedWith(compareByDescending(selector))
}
return sortedData
}
而且,我可以非常方便地传入选择器:书籍::书名
我需要一些指导,如何编写一个sortColumnData函数,将排序的作者计数。
1条答案
按热度按时间ercv8c1e1#
无需重新发明轮子,请参阅Kotlin标准库Ordering|Kotlin
也可以使用方法引用:
其等效于:
对于 list.sortedBy { it.authors.size },无法使用方法引用。