partition所在位置是kotlin.collections.partition,其相关用法介绍如下。

用法一

inline fun <T> Array<out T>.partition(
    predicate: (T) -> Boolean
): Pair<List<T>, List<T>>
inline fun ByteArray.partition(
    predicate: (Byte) -> Boolean
): Pair<List<Byte>, List<Byte>>
inline fun ShortArray.partition(
    predicate: (Short) -> Boolean
): Pair<List<Short>, List<Short>>
inline fun IntArray.partition(
    predicate: (Int) -> Boolean
): Pair<List<Int>, List<Int>>
inline fun LongArray.partition(
    predicate: (Long) -> Boolean
): Pair<List<Long>, List<Long>>
inline fun FloatArray.partition(
    predicate: (Float) -> Boolean
): Pair<List<Float>, List<Float>>
inline fun DoubleArray.partition(
    predicate: (Double) -> Boolean
): Pair<List<Double>, List<Double>>
inline fun BooleanArray.partition(
    predicate: (Boolean) -> Boolean
): Pair<List<Boolean>, List<Boolean>>
inline fun CharArray.partition(
    predicate: (Char) -> Boolean
): Pair<List<Char>, List<Char>>

将原始数组拆分为一对列表,其中 first list 包含 predicate 产生 true 的元素,而 second list 包含 predicate 产生 false 的元素。

例子:

import kotlin.test.*

fun main(args: Array<String>) {
//sampleStart
val array = intArrayOf(1, 2, 3, 4, 5)
val (even, odd) = array.partition { it % 2 == 0 }
println(even) // [2, 4]
println(odd) // [1, 3, 5]
//sampleEnd
}

输出:

[2, 4]
[1, 3, 5]

用法二

inline fun <T> Iterable<T>.partition(
    predicate: (T) -> Boolean
): Pair<List<T>, List<T>>

将原始集合拆分为一对列表,其中 first list 包含 predicate 产生 true 的元素,而 second list 包含 predicate 产生 false 的元素。

例子:



fun main(args: Array<String>) {
//sampleStart
data class Person(val name: String, val age: Int) {
    override fun toString(): String {
        return "$name - $age"
    }
}

val list = listOf(Person("Tom", 18), Person("Andy", 32), Person("Sarah", 22))
val result = list.partition { it.age < 30 }
println(result) // ([Tom - 18, Sarah - 22], [Andy - 32])
//sampleEnd
}

输出:

([Tom - 18, Sarah - 22], [Andy - 32])