给定一个列表和一个条件,我如何使所有匹配该条件的元素成为列表中的第一个元素?例如,列表:(10第100、12、12、14、12、1002条)给定元素为12的条件,列表现在应该为(12第12、12、10、100、14、1002条)这是一个昂贵的功能要做吗?我试过使用Kotlins内置的排序功能,但它不排序给定的特定值。
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]
请参阅过滤集合:分区
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的答案可能更有效,您必须测试和比较每种方法的性能。
2条答案
按热度按时间roejwanj1#
一个列表可以根据给定的条件拆分为一对两个列表:
请参阅过滤集合:分区
qnzebej02#
一种简单的方法是根据每个项目是否等于12对整个列表进行排序:
由于Kotlin使用了稳定的排序算法,因此可以保证不是12的项目保持相同的顺序。
然而,lukas.j的答案可能更有效,您必须测试和比较每种方法的性能。