相关疑难解决方法(0)

如何基于/比较Kotlin中的多个值进行排序?

假设我有一个class Foo(val a: String, val b: Int, val c: Date),我想Foo根据所有三个属性对s 列表进行排序.我该怎么做?

comparable kotlin

68
推荐指数
1
解决办法
2万
查看次数

如何在不区分大小写的顺序中对对象列表进行排序?

假设我在Kotlin中有一个字符串列表: stringList: MutableList<String>

然后通过这样做很容易按不区分大小写的顺序对这样的列表进行排序:

stringList.sortWith(String.CASE_INSENSITIVE_ORDER)
Run Code Online (Sandbox Code Playgroud)

但是,如何按不区分大小写的顺序对对象列表进行排序?例如:places: MutableList<Place>

哪个Place是带有2个字段的简单类 - name: String而且id: Int,我想按name字段对这些地方进行排序.

我试图做这样的事情:places.sortedWith(compareBy { it.name })但是这个解决方案并没有考虑到字母的情况.

kotlin

17
推荐指数
2
解决办法
6107
查看次数

如何使用Kotlin中的多个比较字段按降序排序

Kotlin允许我使用多个比较字段对ASC和数组进行排序.

例如:

return ArrayList(originalItems)
    .sortedWith(compareBy({ it.localHits }, { it.title }))
Run Code Online (Sandbox Code Playgroud)

但是当我尝试排序DESC(compareByDescending())时,它不允许我使用多个比较字段.

有什么办法可以吗?

kotlin

17
推荐指数
3
解决办法
9152
查看次数

如何在 Kotlin 中更改compareBy的顺序

我需要一个 Kotlin 中的比较器来对进入我的回收器视图中的每个对象进行排序(使用快速适配器)。

我需要按整数对对象进行排序,其中最大的排在前面。

上面的代码对进入列表的对象进行排序,但最大的对象位于列表的末尾。有办法颠倒顺序吗?

playersFastAdapter.itemAdapter.withComparator(compareBy({ it.player.goals }, {it.player.assists}), true)
Run Code Online (Sandbox Code Playgroud)

android comparable kotlin

5
推荐指数
1
解决办法
4057
查看次数

如何在 Kotlin 中根据多种类型和值进行排序?

给出以下类:

interface Item {
    val name: String
}

data class Server(override val name: String, val id: String) : Item
data class Local(override val name: String, val date: Int) : Item
data class Footer(override val name: String) : Item
Run Code Online (Sandbox Code Playgroud)

如果我们创建一个列表:

val items = arrayListOf<Item>()
items.add(Server("server", "b"))
items.add(Local("local", 2))
items.add(Footer("footer"))
items.add(Server("server", "a"))
items.add(Local("local", 1))
items.add(Footer("footer"))
items.add(Server("server", "c"))
items.add(Local("local", 0))
Run Code Online (Sandbox Code Playgroud)

并对其进行排序:

val groupBy = items.groupBy { it.name }

val partialSort = arrayListOf<Item>()

//individually sort each type
partialSort.addAll(groupBy["local"]!!.map { it as Local }.sortedWith(compareBy({ it.date …
Run Code Online (Sandbox Code Playgroud)

sorting comparable comparator kotlin

2
推荐指数
1
解决办法
2086
查看次数

如何按两个属性和整理器对对象列表进行排序

我必须按 lastName 和 firstName 对对象列表进行排序(如果多个对象的 lastName 相同)。我还必须对这些应用 Collat​​or。

假设我可以为一个属性做到这一点:

val collator = Collator.getInstance(context.getResources().getConfiguration().locale)

myList.sortedWith(compareBy(collator, { it.lastName.toLowerCase() }))
Run Code Online (Sandbox Code Playgroud)

但是是否可以将另一个限制也应用到按名字排序?

functional-programming kotlin

2
推荐指数
1
解决办法
923
查看次数