kotlin 如何使符合给定条件的元素排在列表的第一位?

bkhjykvo  于 2023-02-24  发布在  Kotlin
关注(0)|答案(2)|浏览(370)

给定一个列表和一个条件,我如何使所有匹配该条件的元素成为列表中的第一个元素?
例如,
列表:
(10第100、12、12、14、12、1002条)
给定元素为12的条件,列表现在应该为
(12第12、12、10、100、14、1002条)
这是一个昂贵的功能要做吗?
我试过使用Kotlins内置的排序功能,但它不排序给定的特定值。

roejwanj

roejwanj1#

一个列表可以根据给定的条件拆分为一对两个列表:

val list = listOf(10, 100, 12, 12, 14, 12, 1002)

val result = list.partition { it == 12 }.toList().flatten()

println(result)   // Output: [12, 12, 12, 10, 100, 14, 1002]

请参阅过滤集合:分区

qnzebej0

qnzebej02#

一种简单的方法是根据每个项目是否等于12对整个列表进行排序:

val list = listOf(10, 100, 12, 12, 14, 12, 1002)

val result = list.sortedBy { it != 12 }

println(result)   // Output: [12, 12, 12, 10, 100, 14, 1002]

由于Kotlin使用了稳定的排序算法,因此可以保证不是12的项目保持相同的顺序。
然而,lukas.j的答案可能更有效,您必须测试和比较每种方法的性能。

相关问题