/* * Copyright 2010-2025 JetBrains s.r.o. and Kotlin Programming Language contributors. * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. */ @file:kotlin.jvm.JvmMultifileClass @file:kotlin.jvm.JvmName("ArraysKt") package kotlin.collections // // NOTE: THIS FILE IS AUTO-GENERATED by the GenerateStandardLib.kt // See: https://github.com/JetBrains/kotlin/tree/master/libraries/stdlib // import kotlin.contracts.* import kotlin.random.* import kotlin.ranges.contains import kotlin.ranges.reversed /** * Returns 1st *element* from the array. * * If the size of this array is less than 1, throws an [IndexOutOfBoundsException] except in Kotlin/JS * where the behavior is unspecified, and in Kotlin/Wasm where * a [trap](https://webassembly.github.io/spec/core/intro/overview.html#trap) will be raised instead, * unless `-Xwasm-enable-array-range-checks` compiler flag was specified when linking an executable. */ @kotlin.internal.InlineOnly public inline operator fun Array.component1(): T { return get(0) } /** * Returns 1st *element* from the array. * * If the size of this array is less than 1, throws an [IndexOutOfBoundsException] except in Kotlin/JS * where the behavior is unspecified, and in Kotlin/Wasm where * a [trap](https://webassembly.github.io/spec/core/intro/overview.html#trap) will be raised instead, * unless `-Xwasm-enable-array-range-checks` compiler flag was specified when linking an executable. */ @kotlin.internal.InlineOnly public inline operator fun ByteArray.component1(): Byte { return get(0) } /** * Returns 1st *element* from the array. * * If the size of this array is less than 1, throws an [IndexOutOfBoundsException] except in Kotlin/JS * where the behavior is unspecified, and in Kotlin/Wasm where * a [trap](https://webassembly.github.io/spec/core/intro/overview.html#trap) will be raised instead, * unless `-Xwasm-enable-array-range-checks` compiler flag was specified when linking an executable. */ @kotlin.internal.InlineOnly public inline operator fun ShortArray.component1(): Short { return get(0) } /** * Returns 1st *element* from the array. * * If the size of this array is less than 1, throws an [IndexOutOfBoundsException] except in Kotlin/JS * where the behavior is unspecified, and in Kotlin/Wasm where * a [trap](https://webassembly.github.io/spec/core/intro/overview.html#trap) will be raised instead, * unless `-Xwasm-enable-array-range-checks` compiler flag was specified when linking an executable. */ @kotlin.internal.InlineOnly public inline operator fun IntArray.component1(): Int { return get(0) } /** * Returns 1st *element* from the array. * * If the size of this array is less than 1, throws an [IndexOutOfBoundsException] except in Kotlin/JS * where the behavior is unspecified, and in Kotlin/Wasm where * a [trap](https://webassembly.github.io/spec/core/intro/overview.html#trap) will be raised instead, * unless `-Xwasm-enable-array-range-checks` compiler flag was specified when linking an executable. */ @kotlin.internal.InlineOnly public inline operator fun LongArray.component1(): Long { return get(0) } /** * Returns 1st *element* from the array. * * If the size of this array is less than 1, throws an [IndexOutOfBoundsException] except in Kotlin/JS * where the behavior is unspecified, and in Kotlin/Wasm where * a [trap](https://webassembly.github.io/spec/core/intro/overview.html#trap) will be raised instead, * unless `-Xwasm-enable-array-range-checks` compiler flag was specified when linking an executable. */ @kotlin.internal.InlineOnly public inline operator fun FloatArray.component1(): Float { return get(0) } /** * Returns 1st *element* from the array. * * If the size of this array is less than 1, throws an [IndexOutOfBoundsException] except in Kotlin/JS * where the behavior is unspecified, and in Kotlin/Wasm where * a [trap](https://webassembly.github.io/spec/core/intro/overview.html#trap) will be raised instead, * unless `-Xwasm-enable-array-range-checks` compiler flag was specified when linking an executable. */ @kotlin.internal.InlineOnly public inline operator fun DoubleArray.component1(): Double { return get(0) } /** * Returns 1st *element* from the array. * * If the size of this array is less than 1, throws an [IndexOutOfBoundsException] except in Kotlin/JS * where the behavior is unspecified, and in Kotlin/Wasm where * a [trap](https://webassembly.github.io/spec/core/intro/overview.html#trap) will be raised instead, * unless `-Xwasm-enable-array-range-checks` compiler flag was specified when linking an executable. */ @kotlin.internal.InlineOnly public inline operator fun BooleanArray.component1(): Boolean { return get(0) } /** * Returns 1st *element* from the array. * * If the size of this array is less than 1, throws an [IndexOutOfBoundsException] except in Kotlin/JS * where the behavior is unspecified, and in Kotlin/Wasm where * a [trap](https://webassembly.github.io/spec/core/intro/overview.html#trap) will be raised instead, * unless `-Xwasm-enable-array-range-checks` compiler flag was specified when linking an executable. */ @kotlin.internal.InlineOnly public inline operator fun CharArray.component1(): Char { return get(0) } /** * Returns 2nd *element* from the array. * * If the size of this array is less than 2, throws an [IndexOutOfBoundsException] except in Kotlin/JS * where the behavior is unspecified, and in Kotlin/Wasm where * a [trap](https://webassembly.github.io/spec/core/intro/overview.html#trap) will be raised instead, * unless `-Xwasm-enable-array-range-checks` compiler flag was specified when linking an executable. */ @kotlin.internal.InlineOnly public inline operator fun Array.component2(): T { return get(1) } /** * Returns 2nd *element* from the array. * * If the size of this array is less than 2, throws an [IndexOutOfBoundsException] except in Kotlin/JS * where the behavior is unspecified, and in Kotlin/Wasm where * a [trap](https://webassembly.github.io/spec/core/intro/overview.html#trap) will be raised instead, * unless `-Xwasm-enable-array-range-checks` compiler flag was specified when linking an executable. */ @kotlin.internal.InlineOnly public inline operator fun ByteArray.component2(): Byte { return get(1) } /** * Returns 2nd *element* from the array. * * If the size of this array is less than 2, throws an [IndexOutOfBoundsException] except in Kotlin/JS * where the behavior is unspecified, and in Kotlin/Wasm where * a [trap](https://webassembly.github.io/spec/core/intro/overview.html#trap) will be raised instead, * unless `-Xwasm-enable-array-range-checks` compiler flag was specified when linking an executable. */ @kotlin.internal.InlineOnly public inline operator fun ShortArray.component2(): Short { return get(1) } /** * Returns 2nd *element* from the array. * * If the size of this array is less than 2, throws an [IndexOutOfBoundsException] except in Kotlin/JS * where the behavior is unspecified, and in Kotlin/Wasm where * a [trap](https://webassembly.github.io/spec/core/intro/overview.html#trap) will be raised instead, * unless `-Xwasm-enable-array-range-checks` compiler flag was specified when linking an executable. */ @kotlin.internal.InlineOnly public inline operator fun IntArray.component2(): Int { return get(1) } /** * Returns 2nd *element* from the array. * * If the size of this array is less than 2, throws an [IndexOutOfBoundsException] except in Kotlin/JS * where the behavior is unspecified, and in Kotlin/Wasm where * a [trap](https://webassembly.github.io/spec/core/intro/overview.html#trap) will be raised instead, * unless `-Xwasm-enable-array-range-checks` compiler flag was specified when linking an executable. */ @kotlin.internal.InlineOnly public inline operator fun LongArray.component2(): Long { return get(1) } /** * Returns 2nd *element* from the array. * * If the size of this array is less than 2, throws an [IndexOutOfBoundsException] except in Kotlin/JS * where the behavior is unspecified, and in Kotlin/Wasm where * a [trap](https://webassembly.github.io/spec/core/intro/overview.html#trap) will be raised instead, * unless `-Xwasm-enable-array-range-checks` compiler flag was specified when linking an executable. */ @kotlin.internal.InlineOnly public inline operator fun FloatArray.component2(): Float { return get(1) } /** * Returns 2nd *element* from the array. * * If the size of this array is less than 2, throws an [IndexOutOfBoundsException] except in Kotlin/JS * where the behavior is unspecified, and in Kotlin/Wasm where * a [trap](https://webassembly.github.io/spec/core/intro/overview.html#trap) will be raised instead, * unless `-Xwasm-enable-array-range-checks` compiler flag was specified when linking an executable. */ @kotlin.internal.InlineOnly public inline operator fun DoubleArray.component2(): Double { return get(1) } /** * Returns 2nd *element* from the array. * * If the size of this array is less than 2, throws an [IndexOutOfBoundsException] except in Kotlin/JS * where the behavior is unspecified, and in Kotlin/Wasm where * a [trap](https://webassembly.github.io/spec/core/intro/overview.html#trap) will be raised instead, * unless `-Xwasm-enable-array-range-checks` compiler flag was specified when linking an executable. */ @kotlin.internal.InlineOnly public inline operator fun BooleanArray.component2(): Boolean { return get(1) } /** * Returns 2nd *element* from the array. * * If the size of this array is less than 2, throws an [IndexOutOfBoundsException] except in Kotlin/JS * where the behavior is unspecified, and in Kotlin/Wasm where * a [trap](https://webassembly.github.io/spec/core/intro/overview.html#trap) will be raised instead, * unless `-Xwasm-enable-array-range-checks` compiler flag was specified when linking an executable. */ @kotlin.internal.InlineOnly public inline operator fun CharArray.component2(): Char { return get(1) } /** * Returns 3rd *element* from the array. * * If the size of this array is less than 3, throws an [IndexOutOfBoundsException] except in Kotlin/JS * where the behavior is unspecified, and in Kotlin/Wasm where * a [trap](https://webassembly.github.io/spec/core/intro/overview.html#trap) will be raised instead, * unless `-Xwasm-enable-array-range-checks` compiler flag was specified when linking an executable. */ @kotlin.internal.InlineOnly public inline operator fun Array.component3(): T { return get(2) } /** * Returns 3rd *element* from the array. * * If the size of this array is less than 3, throws an [IndexOutOfBoundsException] except in Kotlin/JS * where the behavior is unspecified, and in Kotlin/Wasm where * a [trap](https://webassembly.github.io/spec/core/intro/overview.html#trap) will be raised instead, * unless `-Xwasm-enable-array-range-checks` compiler flag was specified when linking an executable. */ @kotlin.internal.InlineOnly public inline operator fun ByteArray.component3(): Byte { return get(2) } /** * Returns 3rd *element* from the array. * * If the size of this array is less than 3, throws an [IndexOutOfBoundsException] except in Kotlin/JS * where the behavior is unspecified, and in Kotlin/Wasm where * a [trap](https://webassembly.github.io/spec/core/intro/overview.html#trap) will be raised instead, * unless `-Xwasm-enable-array-range-checks` compiler flag was specified when linking an executable. */ @kotlin.internal.InlineOnly public inline operator fun ShortArray.component3(): Short { return get(2) } /** * Returns 3rd *element* from the array. * * If the size of this array is less than 3, throws an [IndexOutOfBoundsException] except in Kotlin/JS * where the behavior is unspecified, and in Kotlin/Wasm where * a [trap](https://webassembly.github.io/spec/core/intro/overview.html#trap) will be raised instead, * unless `-Xwasm-enable-array-range-checks` compiler flag was specified when linking an executable. */ @kotlin.internal.InlineOnly public inline operator fun IntArray.component3(): Int { return get(2) } /** * Returns 3rd *element* from the array. * * If the size of this array is less than 3, throws an [IndexOutOfBoundsException] except in Kotlin/JS * where the behavior is unspecified, and in Kotlin/Wasm where * a [trap](https://webassembly.github.io/spec/core/intro/overview.html#trap) will be raised instead, * unless `-Xwasm-enable-array-range-checks` compiler flag was specified when linking an executable. */ @kotlin.internal.InlineOnly public inline operator fun LongArray.component3(): Long { return get(2) } /** * Returns 3rd *element* from the array. * * If the size of this array is less than 3, throws an [IndexOutOfBoundsException] except in Kotlin/JS * where the behavior is unspecified, and in Kotlin/Wasm where * a [trap](https://webassembly.github.io/spec/core/intro/overview.html#trap) will be raised instead, * unless `-Xwasm-enable-array-range-checks` compiler flag was specified when linking an executable. */ @kotlin.internal.InlineOnly public inline operator fun FloatArray.component3(): Float { return get(2) } /** * Returns 3rd *element* from the array. * * If the size of this array is less than 3, throws an [IndexOutOfBoundsException] except in Kotlin/JS * where the behavior is unspecified, and in Kotlin/Wasm where * a [trap](https://webassembly.github.io/spec/core/intro/overview.html#trap) will be raised instead, * unless `-Xwasm-enable-array-range-checks` compiler flag was specified when linking an executable. */ @kotlin.internal.InlineOnly public inline operator fun DoubleArray.component3(): Double { return get(2) } /** * Returns 3rd *element* from the array. * * If the size of this array is less than 3, throws an [IndexOutOfBoundsException] except in Kotlin/JS * where the behavior is unspecified, and in Kotlin/Wasm where * a [trap](https://webassembly.github.io/spec/core/intro/overview.html#trap) will be raised instead, * unless `-Xwasm-enable-array-range-checks` compiler flag was specified when linking an executable. */ @kotlin.internal.InlineOnly public inline operator fun BooleanArray.component3(): Boolean { return get(2) } /** * Returns 3rd *element* from the array. * * If the size of this array is less than 3, throws an [IndexOutOfBoundsException] except in Kotlin/JS * where the behavior is unspecified, and in Kotlin/Wasm where * a [trap](https://webassembly.github.io/spec/core/intro/overview.html#trap) will be raised instead, * unless `-Xwasm-enable-array-range-checks` compiler flag was specified when linking an executable. */ @kotlin.internal.InlineOnly public inline operator fun CharArray.component3(): Char { return get(2) } /** * Returns 4th *element* from the array. * * If the size of this array is less than 4, throws an [IndexOutOfBoundsException] except in Kotlin/JS * where the behavior is unspecified, and in Kotlin/Wasm where * a [trap](https://webassembly.github.io/spec/core/intro/overview.html#trap) will be raised instead, * unless `-Xwasm-enable-array-range-checks` compiler flag was specified when linking an executable. */ @kotlin.internal.InlineOnly public inline operator fun Array.component4(): T { return get(3) } /** * Returns 4th *element* from the array. * * If the size of this array is less than 4, throws an [IndexOutOfBoundsException] except in Kotlin/JS * where the behavior is unspecified, and in Kotlin/Wasm where * a [trap](https://webassembly.github.io/spec/core/intro/overview.html#trap) will be raised instead, * unless `-Xwasm-enable-array-range-checks` compiler flag was specified when linking an executable. */ @kotlin.internal.InlineOnly public inline operator fun ByteArray.component4(): Byte { return get(3) } /** * Returns 4th *element* from the array. * * If the size of this array is less than 4, throws an [IndexOutOfBoundsException] except in Kotlin/JS * where the behavior is unspecified, and in Kotlin/Wasm where * a [trap](https://webassembly.github.io/spec/core/intro/overview.html#trap) will be raised instead, * unless `-Xwasm-enable-array-range-checks` compiler flag was specified when linking an executable. */ @kotlin.internal.InlineOnly public inline operator fun ShortArray.component4(): Short { return get(3) } /** * Returns 4th *element* from the array. * * If the size of this array is less than 4, throws an [IndexOutOfBoundsException] except in Kotlin/JS * where the behavior is unspecified, and in Kotlin/Wasm where * a [trap](https://webassembly.github.io/spec/core/intro/overview.html#trap) will be raised instead, * unless `-Xwasm-enable-array-range-checks` compiler flag was specified when linking an executable. */ @kotlin.internal.InlineOnly public inline operator fun IntArray.component4(): Int { return get(3) } /** * Returns 4th *element* from the array. * * If the size of this array is less than 4, throws an [IndexOutOfBoundsException] except in Kotlin/JS * where the behavior is unspecified, and in Kotlin/Wasm where * a [trap](https://webassembly.github.io/spec/core/intro/overview.html#trap) will be raised instead, * unless `-Xwasm-enable-array-range-checks` compiler flag was specified when linking an executable. */ @kotlin.internal.InlineOnly public inline operator fun LongArray.component4(): Long { return get(3) } /** * Returns 4th *element* from the array. * * If the size of this array is less than 4, throws an [IndexOutOfBoundsException] except in Kotlin/JS * where the behavior is unspecified, and in Kotlin/Wasm where * a [trap](https://webassembly.github.io/spec/core/intro/overview.html#trap) will be raised instead, * unless `-Xwasm-enable-array-range-checks` compiler flag was specified when linking an executable. */ @kotlin.internal.InlineOnly public inline operator fun FloatArray.component4(): Float { return get(3) } /** * Returns 4th *element* from the array. * * If the size of this array is less than 4, throws an [IndexOutOfBoundsException] except in Kotlin/JS * where the behavior is unspecified, and in Kotlin/Wasm where * a [trap](https://webassembly.github.io/spec/core/intro/overview.html#trap) will be raised instead, * unless `-Xwasm-enable-array-range-checks` compiler flag was specified when linking an executable. */ @kotlin.internal.InlineOnly public inline operator fun DoubleArray.component4(): Double { return get(3) } /** * Returns 4th *element* from the array. * * If the size of this array is less than 4, throws an [IndexOutOfBoundsException] except in Kotlin/JS * where the behavior is unspecified, and in Kotlin/Wasm where * a [trap](https://webassembly.github.io/spec/core/intro/overview.html#trap) will be raised instead, * unless `-Xwasm-enable-array-range-checks` compiler flag was specified when linking an executable. */ @kotlin.internal.InlineOnly public inline operator fun BooleanArray.component4(): Boolean { return get(3) } /** * Returns 4th *element* from the array. * * If the size of this array is less than 4, throws an [IndexOutOfBoundsException] except in Kotlin/JS * where the behavior is unspecified, and in Kotlin/Wasm where * a [trap](https://webassembly.github.io/spec/core/intro/overview.html#trap) will be raised instead, * unless `-Xwasm-enable-array-range-checks` compiler flag was specified when linking an executable. */ @kotlin.internal.InlineOnly public inline operator fun CharArray.component4(): Char { return get(3) } /** * Returns 5th *element* from the array. * * If the size of this array is less than 5, throws an [IndexOutOfBoundsException] except in Kotlin/JS * where the behavior is unspecified, and in Kotlin/Wasm where * a [trap](https://webassembly.github.io/spec/core/intro/overview.html#trap) will be raised instead, * unless `-Xwasm-enable-array-range-checks` compiler flag was specified when linking an executable. */ @kotlin.internal.InlineOnly public inline operator fun Array.component5(): T { return get(4) } /** * Returns 5th *element* from the array. * * If the size of this array is less than 5, throws an [IndexOutOfBoundsException] except in Kotlin/JS * where the behavior is unspecified, and in Kotlin/Wasm where * a [trap](https://webassembly.github.io/spec/core/intro/overview.html#trap) will be raised instead, * unless `-Xwasm-enable-array-range-checks` compiler flag was specified when linking an executable. */ @kotlin.internal.InlineOnly public inline operator fun ByteArray.component5(): Byte { return get(4) } /** * Returns 5th *element* from the array. * * If the size of this array is less than 5, throws an [IndexOutOfBoundsException] except in Kotlin/JS * where the behavior is unspecified, and in Kotlin/Wasm where * a [trap](https://webassembly.github.io/spec/core/intro/overview.html#trap) will be raised instead, * unless `-Xwasm-enable-array-range-checks` compiler flag was specified when linking an executable. */ @kotlin.internal.InlineOnly public inline operator fun ShortArray.component5(): Short { return get(4) } /** * Returns 5th *element* from the array. * * If the size of this array is less than 5, throws an [IndexOutOfBoundsException] except in Kotlin/JS * where the behavior is unspecified, and in Kotlin/Wasm where * a [trap](https://webassembly.github.io/spec/core/intro/overview.html#trap) will be raised instead, * unless `-Xwasm-enable-array-range-checks` compiler flag was specified when linking an executable. */ @kotlin.internal.InlineOnly public inline operator fun IntArray.component5(): Int { return get(4) } /** * Returns 5th *element* from the array. * * If the size of this array is less than 5, throws an [IndexOutOfBoundsException] except in Kotlin/JS * where the behavior is unspecified, and in Kotlin/Wasm where * a [trap](https://webassembly.github.io/spec/core/intro/overview.html#trap) will be raised instead, * unless `-Xwasm-enable-array-range-checks` compiler flag was specified when linking an executable. */ @kotlin.internal.InlineOnly public inline operator fun LongArray.component5(): Long { return get(4) } /** * Returns 5th *element* from the array. * * If the size of this array is less than 5, throws an [IndexOutOfBoundsException] except in Kotlin/JS * where the behavior is unspecified, and in Kotlin/Wasm where * a [trap](https://webassembly.github.io/spec/core/intro/overview.html#trap) will be raised instead, * unless `-Xwasm-enable-array-range-checks` compiler flag was specified when linking an executable. */ @kotlin.internal.InlineOnly public inline operator fun FloatArray.component5(): Float { return get(4) } /** * Returns 5th *element* from the array. * * If the size of this array is less than 5, throws an [IndexOutOfBoundsException] except in Kotlin/JS * where the behavior is unspecified, and in Kotlin/Wasm where * a [trap](https://webassembly.github.io/spec/core/intro/overview.html#trap) will be raised instead, * unless `-Xwasm-enable-array-range-checks` compiler flag was specified when linking an executable. */ @kotlin.internal.InlineOnly public inline operator fun DoubleArray.component5(): Double { return get(4) } /** * Returns 5th *element* from the array. * * If the size of this array is less than 5, throws an [IndexOutOfBoundsException] except in Kotlin/JS * where the behavior is unspecified, and in Kotlin/Wasm where * a [trap](https://webassembly.github.io/spec/core/intro/overview.html#trap) will be raised instead, * unless `-Xwasm-enable-array-range-checks` compiler flag was specified when linking an executable. */ @kotlin.internal.InlineOnly public inline operator fun BooleanArray.component5(): Boolean { return get(4) } /** * Returns 5th *element* from the array. * * If the size of this array is less than 5, throws an [IndexOutOfBoundsException] except in Kotlin/JS * where the behavior is unspecified, and in Kotlin/Wasm where * a [trap](https://webassembly.github.io/spec/core/intro/overview.html#trap) will be raised instead, * unless `-Xwasm-enable-array-range-checks` compiler flag was specified when linking an executable. */ @kotlin.internal.InlineOnly public inline operator fun CharArray.component5(): Char { return get(4) } /** * Returns `true` if [element] is found in the array. */ public operator fun <@kotlin.internal.OnlyInputTypes T> Array.contains(element: T): Boolean { return indexOf(element) >= 0 } /** * Returns `true` if [element] is found in the array. */ public operator fun ByteArray.contains(element: Byte): Boolean { return indexOf(element) >= 0 } /** * Returns `true` if [element] is found in the array. */ public operator fun ShortArray.contains(element: Short): Boolean { return indexOf(element) >= 0 } /** * Returns `true` if [element] is found in the array. */ public operator fun IntArray.contains(element: Int): Boolean { return indexOf(element) >= 0 } /** * Returns `true` if [element] is found in the array. */ public operator fun LongArray.contains(element: Long): Boolean { return indexOf(element) >= 0 } /** * Returns `true` if [element] is found in the array. */ @Deprecated("The function has unclear behavior when searching for NaN or zero values and will be removed soon. Use 'any { it == element }' instead to continue using this behavior, or '.asList().contains(element: T)' to get the same search behavior as in a list.", ReplaceWith("any { it == element }")) @DeprecatedSinceKotlin(warningSince = "1.4", errorSince = "1.6", hiddenSince = "1.7") public operator fun FloatArray.contains(element: Float): Boolean { return any { it == element } } /** * Returns `true` if [element] is found in the array. */ @Deprecated("The function has unclear behavior when searching for NaN or zero values and will be removed soon. Use 'any { it == element }' instead to continue using this behavior, or '.asList().contains(element: T)' to get the same search behavior as in a list.", ReplaceWith("any { it == element }")) @DeprecatedSinceKotlin(warningSince = "1.4", errorSince = "1.6", hiddenSince = "1.7") public operator fun DoubleArray.contains(element: Double): Boolean { return any { it == element } } /** * Returns `true` if [element] is found in the array. */ public operator fun BooleanArray.contains(element: Boolean): Boolean { return indexOf(element) >= 0 } /** * Returns `true` if [element] is found in the array. */ public operator fun CharArray.contains(element: Char): Boolean { return indexOf(element) >= 0 } /** * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this array. * * @sample samples.collections.Collections.Elements.elementAt */ public expect fun Array.elementAt(index: Int): T /** * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this array. * * @sample samples.collections.Collections.Elements.elementAt */ public expect fun ByteArray.elementAt(index: Int): Byte /** * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this array. * * @sample samples.collections.Collections.Elements.elementAt */ public expect fun ShortArray.elementAt(index: Int): Short /** * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this array. * * @sample samples.collections.Collections.Elements.elementAt */ public expect fun IntArray.elementAt(index: Int): Int /** * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this array. * * @sample samples.collections.Collections.Elements.elementAt */ public expect fun LongArray.elementAt(index: Int): Long /** * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this array. * * @sample samples.collections.Collections.Elements.elementAt */ public expect fun FloatArray.elementAt(index: Int): Float /** * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this array. * * @sample samples.collections.Collections.Elements.elementAt */ public expect fun DoubleArray.elementAt(index: Int): Double /** * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this array. * * @sample samples.collections.Collections.Elements.elementAt */ public expect fun BooleanArray.elementAt(index: Int): Boolean /** * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this array. * * @sample samples.collections.Collections.Elements.elementAt */ public expect fun CharArray.elementAt(index: Int): Char /** * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this array. * * @sample samples.collections.Collections.Elements.elementAtOrElse */ @kotlin.internal.InlineOnly public inline fun Array.elementAtOrElse(index: Int, defaultValue: (Int) -> T): T { contract { callsInPlace(defaultValue, InvocationKind.AT_MOST_ONCE) } return if (index in indices) get(index) else defaultValue(index) } /** * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this array. * * @sample samples.collections.Collections.Elements.elementAtOrElse */ @kotlin.internal.InlineOnly public inline fun ByteArray.elementAtOrElse(index: Int, defaultValue: (Int) -> Byte): Byte { contract { callsInPlace(defaultValue, InvocationKind.AT_MOST_ONCE) } return if (index in indices) get(index) else defaultValue(index) } /** * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this array. * * @sample samples.collections.Collections.Elements.elementAtOrElse */ @kotlin.internal.InlineOnly public inline fun ShortArray.elementAtOrElse(index: Int, defaultValue: (Int) -> Short): Short { contract { callsInPlace(defaultValue, InvocationKind.AT_MOST_ONCE) } return if (index in indices) get(index) else defaultValue(index) } /** * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this array. * * @sample samples.collections.Collections.Elements.elementAtOrElse */ @kotlin.internal.InlineOnly public inline fun IntArray.elementAtOrElse(index: Int, defaultValue: (Int) -> Int): Int { contract { callsInPlace(defaultValue, InvocationKind.AT_MOST_ONCE) } return if (index in indices) get(index) else defaultValue(index) } /** * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this array. * * @sample samples.collections.Collections.Elements.elementAtOrElse */ @kotlin.internal.InlineOnly public inline fun LongArray.elementAtOrElse(index: Int, defaultValue: (Int) -> Long): Long { contract { callsInPlace(defaultValue, InvocationKind.AT_MOST_ONCE) } return if (index in indices) get(index) else defaultValue(index) } /** * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this array. * * @sample samples.collections.Collections.Elements.elementAtOrElse */ @kotlin.internal.InlineOnly public inline fun FloatArray.elementAtOrElse(index: Int, defaultValue: (Int) -> Float): Float { contract { callsInPlace(defaultValue, InvocationKind.AT_MOST_ONCE) } return if (index in indices) get(index) else defaultValue(index) } /** * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this array. * * @sample samples.collections.Collections.Elements.elementAtOrElse */ @kotlin.internal.InlineOnly public inline fun DoubleArray.elementAtOrElse(index: Int, defaultValue: (Int) -> Double): Double { contract { callsInPlace(defaultValue, InvocationKind.AT_MOST_ONCE) } return if (index in indices) get(index) else defaultValue(index) } /** * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this array. * * @sample samples.collections.Collections.Elements.elementAtOrElse */ @kotlin.internal.InlineOnly public inline fun BooleanArray.elementAtOrElse(index: Int, defaultValue: (Int) -> Boolean): Boolean { contract { callsInPlace(defaultValue, InvocationKind.AT_MOST_ONCE) } return if (index in indices) get(index) else defaultValue(index) } /** * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this array. * * @sample samples.collections.Collections.Elements.elementAtOrElse */ @kotlin.internal.InlineOnly public inline fun CharArray.elementAtOrElse(index: Int, defaultValue: (Int) -> Char): Char { contract { callsInPlace(defaultValue, InvocationKind.AT_MOST_ONCE) } return if (index in indices) get(index) else defaultValue(index) } /** * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array. * * @sample samples.collections.Collections.Elements.elementAtOrNull */ @kotlin.internal.InlineOnly public inline fun Array.elementAtOrNull(index: Int): T? { return this.getOrNull(index) } /** * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array. * * @sample samples.collections.Collections.Elements.elementAtOrNull */ @kotlin.internal.InlineOnly public inline fun ByteArray.elementAtOrNull(index: Int): Byte? { return this.getOrNull(index) } /** * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array. * * @sample samples.collections.Collections.Elements.elementAtOrNull */ @kotlin.internal.InlineOnly public inline fun ShortArray.elementAtOrNull(index: Int): Short? { return this.getOrNull(index) } /** * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array. * * @sample samples.collections.Collections.Elements.elementAtOrNull */ @kotlin.internal.InlineOnly public inline fun IntArray.elementAtOrNull(index: Int): Int? { return this.getOrNull(index) } /** * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array. * * @sample samples.collections.Collections.Elements.elementAtOrNull */ @kotlin.internal.InlineOnly public inline fun LongArray.elementAtOrNull(index: Int): Long? { return this.getOrNull(index) } /** * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array. * * @sample samples.collections.Collections.Elements.elementAtOrNull */ @kotlin.internal.InlineOnly public inline fun FloatArray.elementAtOrNull(index: Int): Float? { return this.getOrNull(index) } /** * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array. * * @sample samples.collections.Collections.Elements.elementAtOrNull */ @kotlin.internal.InlineOnly public inline fun DoubleArray.elementAtOrNull(index: Int): Double? { return this.getOrNull(index) } /** * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array. * * @sample samples.collections.Collections.Elements.elementAtOrNull */ @kotlin.internal.InlineOnly public inline fun BooleanArray.elementAtOrNull(index: Int): Boolean? { return this.getOrNull(index) } /** * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array. * * @sample samples.collections.Collections.Elements.elementAtOrNull */ @kotlin.internal.InlineOnly public inline fun CharArray.elementAtOrNull(index: Int): Char? { return this.getOrNull(index) } /** * Returns the first element matching the given [predicate], or `null` if no such element was found. * * @sample samples.collections.Collections.Elements.find */ @kotlin.internal.InlineOnly public inline fun Array.find(predicate: (T) -> Boolean): T? { return firstOrNull(predicate) } /** * Returns the first element matching the given [predicate], or `null` if no such element was found. * * @sample samples.collections.Collections.Elements.find */ @kotlin.internal.InlineOnly public inline fun ByteArray.find(predicate: (Byte) -> Boolean): Byte? { return firstOrNull(predicate) } /** * Returns the first element matching the given [predicate], or `null` if no such element was found. * * @sample samples.collections.Collections.Elements.find */ @kotlin.internal.InlineOnly public inline fun ShortArray.find(predicate: (Short) -> Boolean): Short? { return firstOrNull(predicate) } /** * Returns the first element matching the given [predicate], or `null` if no such element was found. * * @sample samples.collections.Collections.Elements.find */ @kotlin.internal.InlineOnly public inline fun IntArray.find(predicate: (Int) -> Boolean): Int? { return firstOrNull(predicate) } /** * Returns the first element matching the given [predicate], or `null` if no such element was found. * * @sample samples.collections.Collections.Elements.find */ @kotlin.internal.InlineOnly public inline fun LongArray.find(predicate: (Long) -> Boolean): Long? { return firstOrNull(predicate) } /** * Returns the first element matching the given [predicate], or `null` if no such element was found. * * @sample samples.collections.Collections.Elements.find */ @kotlin.internal.InlineOnly public inline fun FloatArray.find(predicate: (Float) -> Boolean): Float? { return firstOrNull(predicate) } /** * Returns the first element matching the given [predicate], or `null` if no such element was found. * * @sample samples.collections.Collections.Elements.find */ @kotlin.internal.InlineOnly public inline fun DoubleArray.find(predicate: (Double) -> Boolean): Double? { return firstOrNull(predicate) } /** * Returns the first element matching the given [predicate], or `null` if no such element was found. * * @sample samples.collections.Collections.Elements.find */ @kotlin.internal.InlineOnly public inline fun BooleanArray.find(predicate: (Boolean) -> Boolean): Boolean? { return firstOrNull(predicate) } /** * Returns the first element matching the given [predicate], or `null` if no such element was found. * * @sample samples.collections.Collections.Elements.find */ @kotlin.internal.InlineOnly public inline fun CharArray.find(predicate: (Char) -> Boolean): Char? { return firstOrNull(predicate) } /** * Returns the last element matching the given [predicate], or `null` if no such element was found. * * @sample samples.collections.Collections.Elements.find */ @kotlin.internal.InlineOnly public inline fun Array.findLast(predicate: (T) -> Boolean): T? { return lastOrNull(predicate) } /** * Returns the last element matching the given [predicate], or `null` if no such element was found. * * @sample samples.collections.Collections.Elements.find */ @kotlin.internal.InlineOnly public inline fun ByteArray.findLast(predicate: (Byte) -> Boolean): Byte? { return lastOrNull(predicate) } /** * Returns the last element matching the given [predicate], or `null` if no such element was found. * * @sample samples.collections.Collections.Elements.find */ @kotlin.internal.InlineOnly public inline fun ShortArray.findLast(predicate: (Short) -> Boolean): Short? { return lastOrNull(predicate) } /** * Returns the last element matching the given [predicate], or `null` if no such element was found. * * @sample samples.collections.Collections.Elements.find */ @kotlin.internal.InlineOnly public inline fun IntArray.findLast(predicate: (Int) -> Boolean): Int? { return lastOrNull(predicate) } /** * Returns the last element matching the given [predicate], or `null` if no such element was found. * * @sample samples.collections.Collections.Elements.find */ @kotlin.internal.InlineOnly public inline fun LongArray.findLast(predicate: (Long) -> Boolean): Long? { return lastOrNull(predicate) } /** * Returns the last element matching the given [predicate], or `null` if no such element was found. * * @sample samples.collections.Collections.Elements.find */ @kotlin.internal.InlineOnly public inline fun FloatArray.findLast(predicate: (Float) -> Boolean): Float? { return lastOrNull(predicate) } /** * Returns the last element matching the given [predicate], or `null` if no such element was found. * * @sample samples.collections.Collections.Elements.find */ @kotlin.internal.InlineOnly public inline fun DoubleArray.findLast(predicate: (Double) -> Boolean): Double? { return lastOrNull(predicate) } /** * Returns the last element matching the given [predicate], or `null` if no such element was found. * * @sample samples.collections.Collections.Elements.find */ @kotlin.internal.InlineOnly public inline fun BooleanArray.findLast(predicate: (Boolean) -> Boolean): Boolean? { return lastOrNull(predicate) } /** * Returns the last element matching the given [predicate], or `null` if no such element was found. * * @sample samples.collections.Collections.Elements.find */ @kotlin.internal.InlineOnly public inline fun CharArray.findLast(predicate: (Char) -> Boolean): Char? { return lastOrNull(predicate) } /** * Returns the first element. * * @throws NoSuchElementException if the array is empty. */ public fun Array.first(): T { if (isEmpty()) throw NoSuchElementException("Array is empty.") return this[0] } /** * Returns the first element. * * @throws NoSuchElementException if the array is empty. */ public fun ByteArray.first(): Byte { if (isEmpty()) throw NoSuchElementException("Array is empty.") return this[0] } /** * Returns the first element. * * @throws NoSuchElementException if the array is empty. */ public fun ShortArray.first(): Short { if (isEmpty()) throw NoSuchElementException("Array is empty.") return this[0] } /** * Returns the first element. * * @throws NoSuchElementException if the array is empty. */ public fun IntArray.first(): Int { if (isEmpty()) throw NoSuchElementException("Array is empty.") return this[0] } /** * Returns the first element. * * @throws NoSuchElementException if the array is empty. */ public fun LongArray.first(): Long { if (isEmpty()) throw NoSuchElementException("Array is empty.") return this[0] } /** * Returns the first element. * * @throws NoSuchElementException if the array is empty. */ public fun FloatArray.first(): Float { if (isEmpty()) throw NoSuchElementException("Array is empty.") return this[0] } /** * Returns the first element. * * @throws NoSuchElementException if the array is empty. */ public fun DoubleArray.first(): Double { if (isEmpty()) throw NoSuchElementException("Array is empty.") return this[0] } /** * Returns the first element. * * @throws NoSuchElementException if the array is empty. */ public fun BooleanArray.first(): Boolean { if (isEmpty()) throw NoSuchElementException("Array is empty.") return this[0] } /** * Returns the first element. * * @throws NoSuchElementException if the array is empty. */ public fun CharArray.first(): Char { if (isEmpty()) throw NoSuchElementException("Array is empty.") return this[0] } /** * Returns the first element matching the given [predicate]. * @throws [NoSuchElementException] if no such element is found. */ public inline fun Array.first(predicate: (T) -> Boolean): T { for (element in this) if (predicate(element)) return element throw NoSuchElementException("Array contains no element matching the predicate.") } /** * Returns the first element matching the given [predicate]. * @throws [NoSuchElementException] if no such element is found. */ public inline fun ByteArray.first(predicate: (Byte) -> Boolean): Byte { for (element in this) if (predicate(element)) return element throw NoSuchElementException("Array contains no element matching the predicate.") } /** * Returns the first element matching the given [predicate]. * @throws [NoSuchElementException] if no such element is found. */ public inline fun ShortArray.first(predicate: (Short) -> Boolean): Short { for (element in this) if (predicate(element)) return element throw NoSuchElementException("Array contains no element matching the predicate.") } /** * Returns the first element matching the given [predicate]. * @throws [NoSuchElementException] if no such element is found. */ public inline fun IntArray.first(predicate: (Int) -> Boolean): Int { for (element in this) if (predicate(element)) return element throw NoSuchElementException("Array contains no element matching the predicate.") } /** * Returns the first element matching the given [predicate]. * @throws [NoSuchElementException] if no such element is found. */ public inline fun LongArray.first(predicate: (Long) -> Boolean): Long { for (element in this) if (predicate(element)) return element throw NoSuchElementException("Array contains no element matching the predicate.") } /** * Returns the first element matching the given [predicate]. * @throws [NoSuchElementException] if no such element is found. */ public inline fun FloatArray.first(predicate: (Float) -> Boolean): Float { for (element in this) if (predicate(element)) return element throw NoSuchElementException("Array contains no element matching the predicate.") } /** * Returns the first element matching the given [predicate]. * @throws [NoSuchElementException] if no such element is found. */ public inline fun DoubleArray.first(predicate: (Double) -> Boolean): Double { for (element in this) if (predicate(element)) return element throw NoSuchElementException("Array contains no element matching the predicate.") } /** * Returns the first element matching the given [predicate]. * @throws [NoSuchElementException] if no such element is found. */ public inline fun BooleanArray.first(predicate: (Boolean) -> Boolean): Boolean { for (element in this) if (predicate(element)) return element throw NoSuchElementException("Array contains no element matching the predicate.") } /** * Returns the first element matching the given [predicate]. * @throws [NoSuchElementException] if no such element is found. */ public inline fun CharArray.first(predicate: (Char) -> Boolean): Char { for (element in this) if (predicate(element)) return element throw NoSuchElementException("Array contains no element matching the predicate.") } /** * Returns the first non-null value produced by [transform] function being applied to elements of this array in iteration order, * or throws [NoSuchElementException] if no non-null value was produced. * * @sample samples.collections.Collections.Transformations.firstNotNullOf */ @SinceKotlin("1.5") @kotlin.internal.InlineOnly public inline fun Array.firstNotNullOf(transform: (T) -> R?): R { return firstNotNullOfOrNull(transform) ?: throw NoSuchElementException("No element of the array was transformed to a non-null value.") } /** * Returns the first non-null value produced by [transform] function being applied to elements of this array in iteration order, * or `null` if no non-null value was produced. * * @sample samples.collections.Collections.Transformations.firstNotNullOf */ @SinceKotlin("1.5") @kotlin.internal.InlineOnly public inline fun Array.firstNotNullOfOrNull(transform: (T) -> R?): R? { for (element in this) { val result = transform(element) if (result != null) { return result } } return null } /** * Returns the first element, or `null` if the array is empty. */ public fun Array.firstOrNull(): T? { return if (isEmpty()) null else this[0] } /** * Returns the first element, or `null` if the array is empty. */ public fun ByteArray.firstOrNull(): Byte? { return if (isEmpty()) null else this[0] } /** * Returns the first element, or `null` if the array is empty. */ public fun ShortArray.firstOrNull(): Short? { return if (isEmpty()) null else this[0] } /** * Returns the first element, or `null` if the array is empty. */ public fun IntArray.firstOrNull(): Int? { return if (isEmpty()) null else this[0] } /** * Returns the first element, or `null` if the array is empty. */ public fun LongArray.firstOrNull(): Long? { return if (isEmpty()) null else this[0] } /** * Returns the first element, or `null` if the array is empty. */ public fun FloatArray.firstOrNull(): Float? { return if (isEmpty()) null else this[0] } /** * Returns the first element, or `null` if the array is empty. */ public fun DoubleArray.firstOrNull(): Double? { return if (isEmpty()) null else this[0] } /** * Returns the first element, or `null` if the array is empty. */ public fun BooleanArray.firstOrNull(): Boolean? { return if (isEmpty()) null else this[0] } /** * Returns the first element, or `null` if the array is empty. */ public fun CharArray.firstOrNull(): Char? { return if (isEmpty()) null else this[0] } /** * Returns the first element matching the given [predicate], or `null` if element was not found. */ public inline fun Array.firstOrNull(predicate: (T) -> Boolean): T? { for (element in this) if (predicate(element)) return element return null } /** * Returns the first element matching the given [predicate], or `null` if element was not found. */ public inline fun ByteArray.firstOrNull(predicate: (Byte) -> Boolean): Byte? { for (element in this) if (predicate(element)) return element return null } /** * Returns the first element matching the given [predicate], or `null` if element was not found. */ public inline fun ShortArray.firstOrNull(predicate: (Short) -> Boolean): Short? { for (element in this) if (predicate(element)) return element return null } /** * Returns the first element matching the given [predicate], or `null` if element was not found. */ public inline fun IntArray.firstOrNull(predicate: (Int) -> Boolean): Int? { for (element in this) if (predicate(element)) return element return null } /** * Returns the first element matching the given [predicate], or `null` if element was not found. */ public inline fun LongArray.firstOrNull(predicate: (Long) -> Boolean): Long? { for (element in this) if (predicate(element)) return element return null } /** * Returns the first element matching the given [predicate], or `null` if element was not found. */ public inline fun FloatArray.firstOrNull(predicate: (Float) -> Boolean): Float? { for (element in this) if (predicate(element)) return element return null } /** * Returns the first element matching the given [predicate], or `null` if element was not found. */ public inline fun DoubleArray.firstOrNull(predicate: (Double) -> Boolean): Double? { for (element in this) if (predicate(element)) return element return null } /** * Returns the first element matching the given [predicate], or `null` if element was not found. */ public inline fun BooleanArray.firstOrNull(predicate: (Boolean) -> Boolean): Boolean? { for (element in this) if (predicate(element)) return element return null } /** * Returns the first element matching the given [predicate], or `null` if element was not found. */ public inline fun CharArray.firstOrNull(predicate: (Char) -> Boolean): Char? { for (element in this) if (predicate(element)) return element return null } /** * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this array. */ @kotlin.internal.InlineOnly public inline fun Array.getOrElse(index: Int, defaultValue: (Int) -> T): T { contract { callsInPlace(defaultValue, InvocationKind.AT_MOST_ONCE) } return if (index in indices) get(index) else defaultValue(index) } /** * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this array. */ @kotlin.internal.InlineOnly public inline fun ByteArray.getOrElse(index: Int, defaultValue: (Int) -> Byte): Byte { contract { callsInPlace(defaultValue, InvocationKind.AT_MOST_ONCE) } return if (index in indices) get(index) else defaultValue(index) } /** * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this array. */ @kotlin.internal.InlineOnly public inline fun ShortArray.getOrElse(index: Int, defaultValue: (Int) -> Short): Short { contract { callsInPlace(defaultValue, InvocationKind.AT_MOST_ONCE) } return if (index in indices) get(index) else defaultValue(index) } /** * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this array. */ @kotlin.internal.InlineOnly public inline fun IntArray.getOrElse(index: Int, defaultValue: (Int) -> Int): Int { contract { callsInPlace(defaultValue, InvocationKind.AT_MOST_ONCE) } return if (index in indices) get(index) else defaultValue(index) } /** * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this array. */ @kotlin.internal.InlineOnly public inline fun LongArray.getOrElse(index: Int, defaultValue: (Int) -> Long): Long { contract { callsInPlace(defaultValue, InvocationKind.AT_MOST_ONCE) } return if (index in indices) get(index) else defaultValue(index) } /** * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this array. */ @kotlin.internal.InlineOnly public inline fun FloatArray.getOrElse(index: Int, defaultValue: (Int) -> Float): Float { contract { callsInPlace(defaultValue, InvocationKind.AT_MOST_ONCE) } return if (index in indices) get(index) else defaultValue(index) } /** * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this array. */ @kotlin.internal.InlineOnly public inline fun DoubleArray.getOrElse(index: Int, defaultValue: (Int) -> Double): Double { contract { callsInPlace(defaultValue, InvocationKind.AT_MOST_ONCE) } return if (index in indices) get(index) else defaultValue(index) } /** * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this array. */ @kotlin.internal.InlineOnly public inline fun BooleanArray.getOrElse(index: Int, defaultValue: (Int) -> Boolean): Boolean { contract { callsInPlace(defaultValue, InvocationKind.AT_MOST_ONCE) } return if (index in indices) get(index) else defaultValue(index) } /** * Returns an element at the given [index] or the result of calling the [defaultValue] function if the [index] is out of bounds of this array. */ @kotlin.internal.InlineOnly public inline fun CharArray.getOrElse(index: Int, defaultValue: (Int) -> Char): Char { contract { callsInPlace(defaultValue, InvocationKind.AT_MOST_ONCE) } return if (index in indices) get(index) else defaultValue(index) } /** * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array. * * @sample samples.collections.Collections.Elements.getOrNull */ public fun Array.getOrNull(index: Int): T? { return if (index in indices) get(index) else null } /** * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array. * * @sample samples.collections.Collections.Elements.getOrNull */ public fun ByteArray.getOrNull(index: Int): Byte? { return if (index in indices) get(index) else null } /** * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array. * * @sample samples.collections.Collections.Elements.getOrNull */ public fun ShortArray.getOrNull(index: Int): Short? { return if (index in indices) get(index) else null } /** * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array. * * @sample samples.collections.Collections.Elements.getOrNull */ public fun IntArray.getOrNull(index: Int): Int? { return if (index in indices) get(index) else null } /** * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array. * * @sample samples.collections.Collections.Elements.getOrNull */ public fun LongArray.getOrNull(index: Int): Long? { return if (index in indices) get(index) else null } /** * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array. * * @sample samples.collections.Collections.Elements.getOrNull */ public fun FloatArray.getOrNull(index: Int): Float? { return if (index in indices) get(index) else null } /** * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array. * * @sample samples.collections.Collections.Elements.getOrNull */ public fun DoubleArray.getOrNull(index: Int): Double? { return if (index in indices) get(index) else null } /** * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array. * * @sample samples.collections.Collections.Elements.getOrNull */ public fun BooleanArray.getOrNull(index: Int): Boolean? { return if (index in indices) get(index) else null } /** * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array. * * @sample samples.collections.Collections.Elements.getOrNull */ public fun CharArray.getOrNull(index: Int): Char? { return if (index in indices) get(index) else null } /** * Returns first index of [element], or -1 if the array does not contain element. */ public fun <@kotlin.internal.OnlyInputTypes T> Array.indexOf(element: T): Int { if (element == null) { for (index in indices) { if (this[index] == null) { return index } } } else { for (index in indices) { if (element == this[index]) { return index } } } return -1 } /** * Returns first index of [element], or -1 if the array does not contain element. */ public fun ByteArray.indexOf(element: Byte): Int { for (index in indices) { if (element == this[index]) { return index } } return -1 } /** * Returns first index of [element], or -1 if the array does not contain element. */ public fun ShortArray.indexOf(element: Short): Int { for (index in indices) { if (element == this[index]) { return index } } return -1 } /** * Returns first index of [element], or -1 if the array does not contain element. */ public fun IntArray.indexOf(element: Int): Int { for (index in indices) { if (element == this[index]) { return index } } return -1 } /** * Returns first index of [element], or -1 if the array does not contain element. */ public fun LongArray.indexOf(element: Long): Int { for (index in indices) { if (element == this[index]) { return index } } return -1 } /** * Returns first index of [element], or -1 if the array does not contain element. */ @Deprecated("The function has unclear behavior when searching for NaN or zero values and will be removed soon. Use 'indexOfFirst { it == element }' instead to continue using this behavior, or '.asList().indexOf(element: T)' to get the same search behavior as in a list.", ReplaceWith("indexOfFirst { it == element }")) @DeprecatedSinceKotlin(warningSince = "1.4", errorSince = "1.6", hiddenSince = "1.7") public fun FloatArray.indexOf(element: Float): Int { for (index in indices) { if (element == this[index]) { return index } } return -1 } /** * Returns first index of [element], or -1 if the array does not contain element. */ @Deprecated("The function has unclear behavior when searching for NaN or zero values and will be removed soon. Use 'indexOfFirst { it == element }' instead to continue using this behavior, or '.asList().indexOf(element: T)' to get the same search behavior as in a list.", ReplaceWith("indexOfFirst { it == element }")) @DeprecatedSinceKotlin(warningSince = "1.4", errorSince = "1.6", hiddenSince = "1.7") public fun DoubleArray.indexOf(element: Double): Int { for (index in indices) { if (element == this[index]) { return index } } return -1 } /** * Returns first index of [element], or -1 if the array does not contain element. */ public fun BooleanArray.indexOf(element: Boolean): Int { for (index in indices) { if (element == this[index]) { return index } } return -1 } /** * Returns first index of [element], or -1 if the array does not contain element. */ public fun CharArray.indexOf(element: Char): Int { for (index in indices) { if (element == this[index]) { return index } } return -1 } /** * Returns index of the first element matching the given [predicate], or -1 if the array does not contain such element. */ public inline fun Array.indexOfFirst(predicate: (T) -> Boolean): Int { for (index in indices) { if (predicate(this[index])) { return index } } return -1 } /** * Returns index of the first element matching the given [predicate], or -1 if the array does not contain such element. */ public inline fun ByteArray.indexOfFirst(predicate: (Byte) -> Boolean): Int { for (index in indices) { if (predicate(this[index])) { return index } } return -1 } /** * Returns index of the first element matching the given [predicate], or -1 if the array does not contain such element. */ public inline fun ShortArray.indexOfFirst(predicate: (Short) -> Boolean): Int { for (index in indices) { if (predicate(this[index])) { return index } } return -1 } /** * Returns index of the first element matching the given [predicate], or -1 if the array does not contain such element. */ public inline fun IntArray.indexOfFirst(predicate: (Int) -> Boolean): Int { for (index in indices) { if (predicate(this[index])) { return index } } return -1 } /** * Returns index of the first element matching the given [predicate], or -1 if the array does not contain such element. */ public inline fun LongArray.indexOfFirst(predicate: (Long) -> Boolean): Int { for (index in indices) { if (predicate(this[index])) { return index } } return -1 } /** * Returns index of the first element matching the given [predicate], or -1 if the array does not contain such element. */ public inline fun FloatArray.indexOfFirst(predicate: (Float) -> Boolean): Int { for (index in indices) { if (predicate(this[index])) { return index } } return -1 } /** * Returns index of the first element matching the given [predicate], or -1 if the array does not contain such element. */ public inline fun DoubleArray.indexOfFirst(predicate: (Double) -> Boolean): Int { for (index in indices) { if (predicate(this[index])) { return index } } return -1 } /** * Returns index of the first element matching the given [predicate], or -1 if the array does not contain such element. */ public inline fun BooleanArray.indexOfFirst(predicate: (Boolean) -> Boolean): Int { for (index in indices) { if (predicate(this[index])) { return index } } return -1 } /** * Returns index of the first element matching the given [predicate], or -1 if the array does not contain such element. */ public inline fun CharArray.indexOfFirst(predicate: (Char) -> Boolean): Int { for (index in indices) { if (predicate(this[index])) { return index } } return -1 } /** * Returns index of the last element matching the given [predicate], or -1 if the array does not contain such element. */ public inline fun Array.indexOfLast(predicate: (T) -> Boolean): Int { for (index in indices.reversed()) { if (predicate(this[index])) { return index } } return -1 } /** * Returns index of the last element matching the given [predicate], or -1 if the array does not contain such element. */ public inline fun ByteArray.indexOfLast(predicate: (Byte) -> Boolean): Int { for (index in indices.reversed()) { if (predicate(this[index])) { return index } } return -1 } /** * Returns index of the last element matching the given [predicate], or -1 if the array does not contain such element. */ public inline fun ShortArray.indexOfLast(predicate: (Short) -> Boolean): Int { for (index in indices.reversed()) { if (predicate(this[index])) { return index } } return -1 } /** * Returns index of the last element matching the given [predicate], or -1 if the array does not contain such element. */ public inline fun IntArray.indexOfLast(predicate: (Int) -> Boolean): Int { for (index in indices.reversed()) { if (predicate(this[index])) { return index } } return -1 } /** * Returns index of the last element matching the given [predicate], or -1 if the array does not contain such element. */ public inline fun LongArray.indexOfLast(predicate: (Long) -> Boolean): Int { for (index in indices.reversed()) { if (predicate(this[index])) { return index } } return -1 } /** * Returns index of the last element matching the given [predicate], or -1 if the array does not contain such element. */ public inline fun FloatArray.indexOfLast(predicate: (Float) -> Boolean): Int { for (index in indices.reversed()) { if (predicate(this[index])) { return index } } return -1 } /** * Returns index of the last element matching the given [predicate], or -1 if the array does not contain such element. */ public inline fun DoubleArray.indexOfLast(predicate: (Double) -> Boolean): Int { for (index in indices.reversed()) { if (predicate(this[index])) { return index } } return -1 } /** * Returns index of the last element matching the given [predicate], or -1 if the array does not contain such element. */ public inline fun BooleanArray.indexOfLast(predicate: (Boolean) -> Boolean): Int { for (index in indices.reversed()) { if (predicate(this[index])) { return index } } return -1 } /** * Returns index of the last element matching the given [predicate], or -1 if the array does not contain such element. */ public inline fun CharArray.indexOfLast(predicate: (Char) -> Boolean): Int { for (index in indices.reversed()) { if (predicate(this[index])) { return index } } return -1 } /** * Returns the last element. * * @throws NoSuchElementException if the array is empty. * * @sample samples.collections.Collections.Elements.last */ public fun Array.last(): T { if (isEmpty()) throw NoSuchElementException("Array is empty.") return this[lastIndex] } /** * Returns the last element. * * @throws NoSuchElementException if the array is empty. * * @sample samples.collections.Collections.Elements.last */ public fun ByteArray.last(): Byte { if (isEmpty()) throw NoSuchElementException("Array is empty.") return this[lastIndex] } /** * Returns the last element. * * @throws NoSuchElementException if the array is empty. * * @sample samples.collections.Collections.Elements.last */ public fun ShortArray.last(): Short { if (isEmpty()) throw NoSuchElementException("Array is empty.") return this[lastIndex] } /** * Returns the last element. * * @throws NoSuchElementException if the array is empty. * * @sample samples.collections.Collections.Elements.last */ public fun IntArray.last(): Int { if (isEmpty()) throw NoSuchElementException("Array is empty.") return this[lastIndex] } /** * Returns the last element. * * @throws NoSuchElementException if the array is empty. * * @sample samples.collections.Collections.Elements.last */ public fun LongArray.last(): Long { if (isEmpty()) throw NoSuchElementException("Array is empty.") return this[lastIndex] } /** * Returns the last element. * * @throws NoSuchElementException if the array is empty. * * @sample samples.collections.Collections.Elements.last */ public fun FloatArray.last(): Float { if (isEmpty()) throw NoSuchElementException("Array is empty.") return this[lastIndex] } /** * Returns the last element. * * @throws NoSuchElementException if the array is empty. * * @sample samples.collections.Collections.Elements.last */ public fun DoubleArray.last(): Double { if (isEmpty()) throw NoSuchElementException("Array is empty.") return this[lastIndex] } /** * Returns the last element. * * @throws NoSuchElementException if the array is empty. * * @sample samples.collections.Collections.Elements.last */ public fun BooleanArray.last(): Boolean { if (isEmpty()) throw NoSuchElementException("Array is empty.") return this[lastIndex] } /** * Returns the last element. * * @throws NoSuchElementException if the array is empty. * * @sample samples.collections.Collections.Elements.last */ public fun CharArray.last(): Char { if (isEmpty()) throw NoSuchElementException("Array is empty.") return this[lastIndex] } /** * Returns the last element matching the given [predicate]. * * @throws NoSuchElementException if no such element is found. * * @sample samples.collections.Collections.Elements.last */ public inline fun Array.last(predicate: (T) -> Boolean): T { for (index in this.indices.reversed()) { val element = this[index] if (predicate(element)) return element } throw NoSuchElementException("Array contains no element matching the predicate.") } /** * Returns the last element matching the given [predicate]. * * @throws NoSuchElementException if no such element is found. * * @sample samples.collections.Collections.Elements.last */ public inline fun ByteArray.last(predicate: (Byte) -> Boolean): Byte { for (index in this.indices.reversed()) { val element = this[index] if (predicate(element)) return element } throw NoSuchElementException("Array contains no element matching the predicate.") } /** * Returns the last element matching the given [predicate]. * * @throws NoSuchElementException if no such element is found. * * @sample samples.collections.Collections.Elements.last */ public inline fun ShortArray.last(predicate: (Short) -> Boolean): Short { for (index in this.indices.reversed()) { val element = this[index] if (predicate(element)) return element } throw NoSuchElementException("Array contains no element matching the predicate.") } /** * Returns the last element matching the given [predicate]. * * @throws NoSuchElementException if no such element is found. * * @sample samples.collections.Collections.Elements.last */ public inline fun IntArray.last(predicate: (Int) -> Boolean): Int { for (index in this.indices.reversed()) { val element = this[index] if (predicate(element)) return element } throw NoSuchElementException("Array contains no element matching the predicate.") } /** * Returns the last element matching the given [predicate]. * * @throws NoSuchElementException if no such element is found. * * @sample samples.collections.Collections.Elements.last */ public inline fun LongArray.last(predicate: (Long) -> Boolean): Long { for (index in this.indices.reversed()) { val element = this[index] if (predicate(element)) return element } throw NoSuchElementException("Array contains no element matching the predicate.") } /** * Returns the last element matching the given [predicate]. * * @throws NoSuchElementException if no such element is found. * * @sample samples.collections.Collections.Elements.last */ public inline fun FloatArray.last(predicate: (Float) -> Boolean): Float { for (index in this.indices.reversed()) { val element = this[index] if (predicate(element)) return element } throw NoSuchElementException("Array contains no element matching the predicate.") } /** * Returns the last element matching the given [predicate]. * * @throws NoSuchElementException if no such element is found. * * @sample samples.collections.Collections.Elements.last */ public inline fun DoubleArray.last(predicate: (Double) -> Boolean): Double { for (index in this.indices.reversed()) { val element = this[index] if (predicate(element)) return element } throw NoSuchElementException("Array contains no element matching the predicate.") } /** * Returns the last element matching the given [predicate]. * * @throws NoSuchElementException if no such element is found. * * @sample samples.collections.Collections.Elements.last */ public inline fun BooleanArray.last(predicate: (Boolean) -> Boolean): Boolean { for (index in this.indices.reversed()) { val element = this[index] if (predicate(element)) return element } throw NoSuchElementException("Array contains no element matching the predicate.") } /** * Returns the last element matching the given [predicate]. * * @throws NoSuchElementException if no such element is found. * * @sample samples.collections.Collections.Elements.last */ public inline fun CharArray.last(predicate: (Char) -> Boolean): Char { for (index in this.indices.reversed()) { val element = this[index] if (predicate(element)) return element } throw NoSuchElementException("Array contains no element matching the predicate.") } /** * Returns last index of [element], or -1 if the array does not contain element. */ public fun <@kotlin.internal.OnlyInputTypes T> Array.lastIndexOf(element: T): Int { if (element == null) { for (index in indices.reversed()) { if (this[index] == null) { return index } } } else { for (index in indices.reversed()) { if (element == this[index]) { return index } } } return -1 } /** * Returns last index of [element], or -1 if the array does not contain element. */ public fun ByteArray.lastIndexOf(element: Byte): Int { for (index in indices.reversed()) { if (element == this[index]) { return index } } return -1 } /** * Returns last index of [element], or -1 if the array does not contain element. */ public fun ShortArray.lastIndexOf(element: Short): Int { for (index in indices.reversed()) { if (element == this[index]) { return index } } return -1 } /** * Returns last index of [element], or -1 if the array does not contain element. */ public fun IntArray.lastIndexOf(element: Int): Int { for (index in indices.reversed()) { if (element == this[index]) { return index } } return -1 } /** * Returns last index of [element], or -1 if the array does not contain element. */ public fun LongArray.lastIndexOf(element: Long): Int { for (index in indices.reversed()) { if (element == this[index]) { return index } } return -1 } /** * Returns last index of [element], or -1 if the array does not contain element. */ @Deprecated("The function has unclear behavior when searching for NaN or zero values and will be removed soon. Use 'indexOfLast { it == element }' instead to continue using this behavior, or '.asList().lastIndexOf(element: T)' to get the same search behavior as in a list.", ReplaceWith("indexOfLast { it == element }")) @DeprecatedSinceKotlin(warningSince = "1.4", errorSince = "1.6", hiddenSince = "1.7") public fun FloatArray.lastIndexOf(element: Float): Int { for (index in indices.reversed()) { if (element == this[index]) { return index } } return -1 } /** * Returns last index of [element], or -1 if the array does not contain element. */ @Deprecated("The function has unclear behavior when searching for NaN or zero values and will be removed soon. Use 'indexOfLast { it == element }' instead to continue using this behavior, or '.asList().lastIndexOf(element: T)' to get the same search behavior as in a list.", ReplaceWith("indexOfLast { it == element }")) @DeprecatedSinceKotlin(warningSince = "1.4", errorSince = "1.6", hiddenSince = "1.7") public fun DoubleArray.lastIndexOf(element: Double): Int { for (index in indices.reversed()) { if (element == this[index]) { return index } } return -1 } /** * Returns last index of [element], or -1 if the array does not contain element. */ public fun BooleanArray.lastIndexOf(element: Boolean): Int { for (index in indices.reversed()) { if (element == this[index]) { return index } } return -1 } /** * Returns last index of [element], or -1 if the array does not contain element. */ public fun CharArray.lastIndexOf(element: Char): Int { for (index in indices.reversed()) { if (element == this[index]) { return index } } return -1 } /** * Returns the last element, or `null` if the array is empty. * * @sample samples.collections.Collections.Elements.last */ public fun Array.lastOrNull(): T? { return if (isEmpty()) null else this[size - 1] } /** * Returns the last element, or `null` if the array is empty. * * @sample samples.collections.Collections.Elements.last */ public fun ByteArray.lastOrNull(): Byte? { return if (isEmpty()) null else this[size - 1] } /** * Returns the last element, or `null` if the array is empty. * * @sample samples.collections.Collections.Elements.last */ public fun ShortArray.lastOrNull(): Short? { return if (isEmpty()) null else this[size - 1] } /** * Returns the last element, or `null` if the array is empty. * * @sample samples.collections.Collections.Elements.last */ public fun IntArray.lastOrNull(): Int? { return if (isEmpty()) null else this[size - 1] } /** * Returns the last element, or `null` if the array is empty. * * @sample samples.collections.Collections.Elements.last */ public fun LongArray.lastOrNull(): Long? { return if (isEmpty()) null else this[size - 1] } /** * Returns the last element, or `null` if the array is empty. * * @sample samples.collections.Collections.Elements.last */ public fun FloatArray.lastOrNull(): Float? { return if (isEmpty()) null else this[size - 1] } /** * Returns the last element, or `null` if the array is empty. * * @sample samples.collections.Collections.Elements.last */ public fun DoubleArray.lastOrNull(): Double? { return if (isEmpty()) null else this[size - 1] } /** * Returns the last element, or `null` if the array is empty. * * @sample samples.collections.Collections.Elements.last */ public fun BooleanArray.lastOrNull(): Boolean? { return if (isEmpty()) null else this[size - 1] } /** * Returns the last element, or `null` if the array is empty. * * @sample samples.collections.Collections.Elements.last */ public fun CharArray.lastOrNull(): Char? { return if (isEmpty()) null else this[size - 1] } /** * Returns the last element matching the given [predicate], or `null` if no such element was found. * * @sample samples.collections.Collections.Elements.last */ public inline fun Array.lastOrNull(predicate: (T) -> Boolean): T? { for (index in this.indices.reversed()) { val element = this[index] if (predicate(element)) return element } return null } /** * Returns the last element matching the given [predicate], or `null` if no such element was found. * * @sample samples.collections.Collections.Elements.last */ public inline fun ByteArray.lastOrNull(predicate: (Byte) -> Boolean): Byte? { for (index in this.indices.reversed()) { val element = this[index] if (predicate(element)) return element } return null } /** * Returns the last element matching the given [predicate], or `null` if no such element was found. * * @sample samples.collections.Collections.Elements.last */ public inline fun ShortArray.lastOrNull(predicate: (Short) -> Boolean): Short? { for (index in this.indices.reversed()) { val element = this[index] if (predicate(element)) return element } return null } /** * Returns the last element matching the given [predicate], or `null` if no such element was found. * * @sample samples.collections.Collections.Elements.last */ public inline fun IntArray.lastOrNull(predicate: (Int) -> Boolean): Int? { for (index in this.indices.reversed()) { val element = this[index] if (predicate(element)) return element } return null } /** * Returns the last element matching the given [predicate], or `null` if no such element was found. * * @sample samples.collections.Collections.Elements.last */ public inline fun LongArray.lastOrNull(predicate: (Long) -> Boolean): Long? { for (index in this.indices.reversed()) { val element = this[index] if (predicate(element)) return element } return null } /** * Returns the last element matching the given [predicate], or `null` if no such element was found. * * @sample samples.collections.Collections.Elements.last */ public inline fun FloatArray.lastOrNull(predicate: (Float) -> Boolean): Float? { for (index in this.indices.reversed()) { val element = this[index] if (predicate(element)) return element } return null } /** * Returns the last element matching the given [predicate], or `null` if no such element was found. * * @sample samples.collections.Collections.Elements.last */ public inline fun DoubleArray.lastOrNull(predicate: (Double) -> Boolean): Double? { for (index in this.indices.reversed()) { val element = this[index] if (predicate(element)) return element } return null } /** * Returns the last element matching the given [predicate], or `null` if no such element was found. * * @sample samples.collections.Collections.Elements.last */ public inline fun BooleanArray.lastOrNull(predicate: (Boolean) -> Boolean): Boolean? { for (index in this.indices.reversed()) { val element = this[index] if (predicate(element)) return element } return null } /** * Returns the last element matching the given [predicate], or `null` if no such element was found. * * @sample samples.collections.Collections.Elements.last */ public inline fun CharArray.lastOrNull(predicate: (Char) -> Boolean): Char? { for (index in this.indices.reversed()) { val element = this[index] if (predicate(element)) return element } return null } /** * Returns a random element from this array. * * @throws NoSuchElementException if this array is empty. */ @SinceKotlin("1.3") @kotlin.internal.InlineOnly public inline fun Array.random(): T { return random(Random) } /** * Returns a random element from this array. * * @throws NoSuchElementException if this array is empty. */ @SinceKotlin("1.3") @kotlin.internal.InlineOnly public inline fun ByteArray.random(): Byte { return random(Random) } /** * Returns a random element from this array. * * @throws NoSuchElementException if this array is empty. */ @SinceKotlin("1.3") @kotlin.internal.InlineOnly public inline fun ShortArray.random(): Short { return random(Random) } /** * Returns a random element from this array. * * @throws NoSuchElementException if this array is empty. */ @SinceKotlin("1.3") @kotlin.internal.InlineOnly public inline fun IntArray.random(): Int { return random(Random) } /** * Returns a random element from this array. * * @throws NoSuchElementException if this array is empty. */ @SinceKotlin("1.3") @kotlin.internal.InlineOnly public inline fun LongArray.random(): Long { return random(Random) } /** * Returns a random element from this array. * * @throws NoSuchElementException if this array is empty. */ @SinceKotlin("1.3") @kotlin.internal.InlineOnly public inline fun FloatArray.random(): Float { return random(Random) } /** * Returns a random element from this array. * * @throws NoSuchElementException if this array is empty. */ @SinceKotlin("1.3") @kotlin.internal.InlineOnly public inline fun DoubleArray.random(): Double { return random(Random) } /** * Returns a random element from this array. * * @throws NoSuchElementException if this array is empty. */ @SinceKotlin("1.3") @kotlin.internal.InlineOnly public inline fun BooleanArray.random(): Boolean { return random(Random) } /** * Returns a random element from this array. * * @throws NoSuchElementException if this array is empty. */ @SinceKotlin("1.3") @kotlin.internal.InlineOnly public inline fun CharArray.random(): Char { return random(Random) } /** * Returns a random element from this array using the specified source of randomness. * * @throws NoSuchElementException if this array is empty. */ @SinceKotlin("1.3") public fun Array.random(random: Random): T { if (isEmpty()) throw NoSuchElementException("Array is empty.") return get(random.nextInt(size)) } /** * Returns a random element from this array using the specified source of randomness. * * @throws NoSuchElementException if this array is empty. */ @SinceKotlin("1.3") public fun ByteArray.random(random: Random): Byte { if (isEmpty()) throw NoSuchElementException("Array is empty.") return get(random.nextInt(size)) } /** * Returns a random element from this array using the specified source of randomness. * * @throws NoSuchElementException if this array is empty. */ @SinceKotlin("1.3") public fun ShortArray.random(random: Random): Short { if (isEmpty()) throw NoSuchElementException("Array is empty.") return get(random.nextInt(size)) } /** * Returns a random element from this array using the specified source of randomness. * * @throws NoSuchElementException if this array is empty. */ @SinceKotlin("1.3") public fun IntArray.random(random: Random): Int { if (isEmpty()) throw NoSuchElementException("Array is empty.") return get(random.nextInt(size)) } /** * Returns a random element from this array using the specified source of randomness. * * @throws NoSuchElementException if this array is empty. */ @SinceKotlin("1.3") public fun LongArray.random(random: Random): Long { if (isEmpty()) throw NoSuchElementException("Array is empty.") return get(random.nextInt(size)) } /** * Returns a random element from this array using the specified source of randomness. * * @throws NoSuchElementException if this array is empty. */ @SinceKotlin("1.3") public fun FloatArray.random(random: Random): Float { if (isEmpty()) throw NoSuchElementException("Array is empty.") return get(random.nextInt(size)) } /** * Returns a random element from this array using the specified source of randomness. * * @throws NoSuchElementException if this array is empty. */ @SinceKotlin("1.3") public fun DoubleArray.random(random: Random): Double { if (isEmpty()) throw NoSuchElementException("Array is empty.") return get(random.nextInt(size)) } /** * Returns a random element from this array using the specified source of randomness. * * @throws NoSuchElementException if this array is empty. */ @SinceKotlin("1.3") public fun BooleanArray.random(random: Random): Boolean { if (isEmpty()) throw NoSuchElementException("Array is empty.") return get(random.nextInt(size)) } /** * Returns a random element from this array using the specified source of randomness. * * @throws NoSuchElementException if this array is empty. */ @SinceKotlin("1.3") public fun CharArray.random(random: Random): Char { if (isEmpty()) throw NoSuchElementException("Array is empty.") return get(random.nextInt(size)) } /** * Returns a random element from this array, or `null` if this array is empty. */ @SinceKotlin("1.4") @kotlin.internal.InlineOnly public inline fun Array.randomOrNull(): T? { return randomOrNull(Random) } /** * Returns a random element from this array, or `null` if this array is empty. */ @SinceKotlin("1.4") @kotlin.internal.InlineOnly public inline fun ByteArray.randomOrNull(): Byte? { return randomOrNull(Random) } /** * Returns a random element from this array, or `null` if this array is empty. */ @SinceKotlin("1.4") @kotlin.internal.InlineOnly public inline fun ShortArray.randomOrNull(): Short? { return randomOrNull(Random) } /** * Returns a random element from this array, or `null` if this array is empty. */ @SinceKotlin("1.4") @kotlin.internal.InlineOnly public inline fun IntArray.randomOrNull(): Int? { return randomOrNull(Random) } /** * Returns a random element from this array, or `null` if this array is empty. */ @SinceKotlin("1.4") @kotlin.internal.InlineOnly public inline fun LongArray.randomOrNull(): Long? { return randomOrNull(Random) } /** * Returns a random element from this array, or `null` if this array is empty. */ @SinceKotlin("1.4") @kotlin.internal.InlineOnly public inline fun FloatArray.randomOrNull(): Float? { return randomOrNull(Random) } /** * Returns a random element from this array, or `null` if this array is empty. */ @SinceKotlin("1.4") @kotlin.internal.InlineOnly public inline fun DoubleArray.randomOrNull(): Double? { return randomOrNull(Random) } /** * Returns a random element from this array, or `null` if this array is empty. */ @SinceKotlin("1.4") @kotlin.internal.InlineOnly public inline fun BooleanArray.randomOrNull(): Boolean? { return randomOrNull(Random) } /** * Returns a random element from this array, or `null` if this array is empty. */ @SinceKotlin("1.4") @kotlin.internal.InlineOnly public inline fun CharArray.randomOrNull(): Char? { return randomOrNull(Random) } /** * Returns a random element from this array using the specified source of randomness, or `null` if this array is empty. */ @SinceKotlin("1.4") public fun Array.randomOrNull(random: Random): T? { if (isEmpty()) return null return get(random.nextInt(size)) } /** * Returns a random element from this array using the specified source of randomness, or `null` if this array is empty. */ @SinceKotlin("1.4") public fun ByteArray.randomOrNull(random: Random): Byte? { if (isEmpty()) return null return get(random.nextInt(size)) } /** * Returns a random element from this array using the specified source of randomness, or `null` if this array is empty. */ @SinceKotlin("1.4") public fun ShortArray.randomOrNull(random: Random): Short? { if (isEmpty()) return null return get(random.nextInt(size)) } /** * Returns a random element from this array using the specified source of randomness, or `null` if this array is empty. */ @SinceKotlin("1.4") public fun IntArray.randomOrNull(random: Random): Int? { if (isEmpty()) return null return get(random.nextInt(size)) } /** * Returns a random element from this array using the specified source of randomness, or `null` if this array is empty. */ @SinceKotlin("1.4") public fun LongArray.randomOrNull(random: Random): Long? { if (isEmpty()) return null return get(random.nextInt(size)) } /** * Returns a random element from this array using the specified source of randomness, or `null` if this array is empty. */ @SinceKotlin("1.4") public fun FloatArray.randomOrNull(random: Random): Float? { if (isEmpty()) return null return get(random.nextInt(size)) } /** * Returns a random element from this array using the specified source of randomness, or `null` if this array is empty. */ @SinceKotlin("1.4") public fun DoubleArray.randomOrNull(random: Random): Double? { if (isEmpty()) return null return get(random.nextInt(size)) } /** * Returns a random element from this array using the specified source of randomness, or `null` if this array is empty. */ @SinceKotlin("1.4") public fun BooleanArray.randomOrNull(random: Random): Boolean? { if (isEmpty()) return null return get(random.nextInt(size)) } /** * Returns a random element from this array using the specified source of randomness, or `null` if this array is empty. */ @SinceKotlin("1.4") public fun CharArray.randomOrNull(random: Random): Char? { if (isEmpty()) return null return get(random.nextInt(size)) } /** * Returns the single element, or throws an exception if the array is empty or has more than one element. */ public fun Array.single(): T { return when (size) { 0 -> throw NoSuchElementException("Array is empty.") 1 -> this[0] else -> throw IllegalArgumentException("Array has more than one element.") } } /** * Returns the single element, or throws an exception if the array is empty or has more than one element. */ public fun ByteArray.single(): Byte { return when (size) { 0 -> throw NoSuchElementException("Array is empty.") 1 -> this[0] else -> throw IllegalArgumentException("Array has more than one element.") } } /** * Returns the single element, or throws an exception if the array is empty or has more than one element. */ public fun ShortArray.single(): Short { return when (size) { 0 -> throw NoSuchElementException("Array is empty.") 1 -> this[0] else -> throw IllegalArgumentException("Array has more than one element.") } } /** * Returns the single element, or throws an exception if the array is empty or has more than one element. */ public fun IntArray.single(): Int { return when (size) { 0 -> throw NoSuchElementException("Array is empty.") 1 -> this[0] else -> throw IllegalArgumentException("Array has more than one element.") } } /** * Returns the single element, or throws an exception if the array is empty or has more than one element. */ public fun LongArray.single(): Long { return when (size) { 0 -> throw NoSuchElementException("Array is empty.") 1 -> this[0] else -> throw IllegalArgumentException("Array has more than one element.") } } /** * Returns the single element, or throws an exception if the array is empty or has more than one element. */ public fun FloatArray.single(): Float { return when (size) { 0 -> throw NoSuchElementException("Array is empty.") 1 -> this[0] else -> throw IllegalArgumentException("Array has more than one element.") } } /** * Returns the single element, or throws an exception if the array is empty or has more than one element. */ public fun DoubleArray.single(): Double { return when (size) { 0 -> throw NoSuchElementException("Array is empty.") 1 -> this[0] else -> throw IllegalArgumentException("Array has more than one element.") } } /** * Returns the single element, or throws an exception if the array is empty or has more than one element. */ public fun BooleanArray.single(): Boolean { return when (size) { 0 -> throw NoSuchElementException("Array is empty.") 1 -> this[0] else -> throw IllegalArgumentException("Array has more than one element.") } } /** * Returns the single element, or throws an exception if the array is empty or has more than one element. */ public fun CharArray.single(): Char { return when (size) { 0 -> throw NoSuchElementException("Array is empty.") 1 -> this[0] else -> throw IllegalArgumentException("Array has more than one element.") } } /** * Returns the single element matching the given [predicate], or throws exception if there is no or more than one matching element. */ public inline fun Array.single(predicate: (T) -> Boolean): T { var single: T? = null var found = false for (element in this) { if (predicate(element)) { if (found) throw IllegalArgumentException("Array contains more than one matching element.") single = element found = true } } if (!found) throw NoSuchElementException("Array contains no element matching the predicate.") @Suppress("UNCHECKED_CAST") return single as T } /** * Returns the single element matching the given [predicate], or throws exception if there is no or more than one matching element. */ public inline fun ByteArray.single(predicate: (Byte) -> Boolean): Byte { var single: Byte? = null var found = false for (element in this) { if (predicate(element)) { if (found) throw IllegalArgumentException("Array contains more than one matching element.") single = element found = true } } if (!found) throw NoSuchElementException("Array contains no element matching the predicate.") @Suppress("UNCHECKED_CAST") return single as Byte } /** * Returns the single element matching the given [predicate], or throws exception if there is no or more than one matching element. */ public inline fun ShortArray.single(predicate: (Short) -> Boolean): Short { var single: Short? = null var found = false for (element in this) { if (predicate(element)) { if (found) throw IllegalArgumentException("Array contains more than one matching element.") single = element found = true } } if (!found) throw NoSuchElementException("Array contains no element matching the predicate.") @Suppress("UNCHECKED_CAST") return single as Short } /** * Returns the single element matching the given [predicate], or throws exception if there is no or more than one matching element. */ public inline fun IntArray.single(predicate: (Int) -> Boolean): Int { var single: Int? = null var found = false for (element in this) { if (predicate(element)) { if (found) throw IllegalArgumentException("Array contains more than one matching element.") single = element found = true } } if (!found) throw NoSuchElementException("Array contains no element matching the predicate.") @Suppress("UNCHECKED_CAST") return single as Int } /** * Returns the single element matching the given [predicate], or throws exception if there is no or more than one matching element. */ public inline fun LongArray.single(predicate: (Long) -> Boolean): Long { var single: Long? = null var found = false for (element in this) { if (predicate(element)) { if (found) throw IllegalArgumentException("Array contains more than one matching element.") single = element found = true } } if (!found) throw NoSuchElementException("Array contains no element matching the predicate.") @Suppress("UNCHECKED_CAST") return single as Long } /** * Returns the single element matching the given [predicate], or throws exception if there is no or more than one matching element. */ public inline fun FloatArray.single(predicate: (Float) -> Boolean): Float { var single: Float? = null var found = false for (element in this) { if (predicate(element)) { if (found) throw IllegalArgumentException("Array contains more than one matching element.") single = element found = true } } if (!found) throw NoSuchElementException("Array contains no element matching the predicate.") @Suppress("UNCHECKED_CAST") return single as Float } /** * Returns the single element matching the given [predicate], or throws exception if there is no or more than one matching element. */ public inline fun DoubleArray.single(predicate: (Double) -> Boolean): Double { var single: Double? = null var found = false for (element in this) { if (predicate(element)) { if (found) throw IllegalArgumentException("Array contains more than one matching element.") single = element found = true } } if (!found) throw NoSuchElementException("Array contains no element matching the predicate.") @Suppress("UNCHECKED_CAST") return single as Double } /** * Returns the single element matching the given [predicate], or throws exception if there is no or more than one matching element. */ public inline fun BooleanArray.single(predicate: (Boolean) -> Boolean): Boolean { var single: Boolean? = null var found = false for (element in this) { if (predicate(element)) { if (found) throw IllegalArgumentException("Array contains more than one matching element.") single = element found = true } } if (!found) throw NoSuchElementException("Array contains no element matching the predicate.") @Suppress("UNCHECKED_CAST") return single as Boolean } /** * Returns the single element matching the given [predicate], or throws exception if there is no or more than one matching element. */ public inline fun CharArray.single(predicate: (Char) -> Boolean): Char { var single: Char? = null var found = false for (element in this) { if (predicate(element)) { if (found) throw IllegalArgumentException("Array contains more than one matching element.") single = element found = true } } if (!found) throw NoSuchElementException("Array contains no element matching the predicate.") @Suppress("UNCHECKED_CAST") return single as Char } /** * Returns single element, or `null` if the array is empty or has more than one element. */ public fun Array.singleOrNull(): T? { return if (size == 1) this[0] else null } /** * Returns single element, or `null` if the array is empty or has more than one element. */ public fun ByteArray.singleOrNull(): Byte? { return if (size == 1) this[0] else null } /** * Returns single element, or `null` if the array is empty or has more than one element. */ public fun ShortArray.singleOrNull(): Short? { return if (size == 1) this[0] else null } /** * Returns single element, or `null` if the array is empty or has more than one element. */ public fun IntArray.singleOrNull(): Int? { return if (size == 1) this[0] else null } /** * Returns single element, or `null` if the array is empty or has more than one element. */ public fun LongArray.singleOrNull(): Long? { return if (size == 1) this[0] else null } /** * Returns single element, or `null` if the array is empty or has more than one element. */ public fun FloatArray.singleOrNull(): Float? { return if (size == 1) this[0] else null } /** * Returns single element, or `null` if the array is empty or has more than one element. */ public fun DoubleArray.singleOrNull(): Double? { return if (size == 1) this[0] else null } /** * Returns single element, or `null` if the array is empty or has more than one element. */ public fun BooleanArray.singleOrNull(): Boolean? { return if (size == 1) this[0] else null } /** * Returns single element, or `null` if the array is empty or has more than one element. */ public fun CharArray.singleOrNull(): Char? { return if (size == 1) this[0] else null } /** * Returns the single element matching the given [predicate], or `null` if element was not found or more than one element was found. */ public inline fun Array.singleOrNull(predicate: (T) -> Boolean): T? { var single: T? = null var found = false for (element in this) { if (predicate(element)) { if (found) return null single = element found = true } } if (!found) return null return single } /** * Returns the single element matching the given [predicate], or `null` if element was not found or more than one element was found. */ public inline fun ByteArray.singleOrNull(predicate: (Byte) -> Boolean): Byte? { var single: Byte? = null var found = false for (element in this) { if (predicate(element)) { if (found) return null single = element found = true } } if (!found) return null return single } /** * Returns the single element matching the given [predicate], or `null` if element was not found or more than one element was found. */ public inline fun ShortArray.singleOrNull(predicate: (Short) -> Boolean): Short? { var single: Short? = null var found = false for (element in this) { if (predicate(element)) { if (found) return null single = element found = true } } if (!found) return null return single } /** * Returns the single element matching the given [predicate], or `null` if element was not found or more than one element was found. */ public inline fun IntArray.singleOrNull(predicate: (Int) -> Boolean): Int? { var single: Int? = null var found = false for (element in this) { if (predicate(element)) { if (found) return null single = element found = true } } if (!found) return null return single } /** * Returns the single element matching the given [predicate], or `null` if element was not found or more than one element was found. */ public inline fun LongArray.singleOrNull(predicate: (Long) -> Boolean): Long? { var single: Long? = null var found = false for (element in this) { if (predicate(element)) { if (found) return null single = element found = true } } if (!found) return null return single } /** * Returns the single element matching the given [predicate], or `null` if element was not found or more than one element was found. */ public inline fun FloatArray.singleOrNull(predicate: (Float) -> Boolean): Float? { var single: Float? = null var found = false for (element in this) { if (predicate(element)) { if (found) return null single = element found = true } } if (!found) return null return single } /** * Returns the single element matching the given [predicate], or `null` if element was not found or more than one element was found. */ public inline fun DoubleArray.singleOrNull(predicate: (Double) -> Boolean): Double? { var single: Double? = null var found = false for (element in this) { if (predicate(element)) { if (found) return null single = element found = true } } if (!found) return null return single } /** * Returns the single element matching the given [predicate], or `null` if element was not found or more than one element was found. */ public inline fun BooleanArray.singleOrNull(predicate: (Boolean) -> Boolean): Boolean? { var single: Boolean? = null var found = false for (element in this) { if (predicate(element)) { if (found) return null single = element found = true } } if (!found) return null return single } /** * Returns the single element matching the given [predicate], or `null` if element was not found or more than one element was found. */ public inline fun CharArray.singleOrNull(predicate: (Char) -> Boolean): Char? { var single: Char? = null var found = false for (element in this) { if (predicate(element)) { if (found) return null single = element found = true } } if (!found) return null return single } /** * Returns a list containing all elements except first [n] elements. * * @throws IllegalArgumentException if [n] is negative. * * @sample samples.collections.Collections.Transformations.drop */ public fun Array.drop(n: Int): List { require(n >= 0) { "Requested element count $n is less than zero." } return takeLast((size - n).coerceAtLeast(0)) } /** * Returns a list containing all elements except first [n] elements. * * @throws IllegalArgumentException if [n] is negative. * * @sample samples.collections.Collections.Transformations.drop */ public fun ByteArray.drop(n: Int): List { require(n >= 0) { "Requested element count $n is less than zero." } return takeLast((size - n).coerceAtLeast(0)) } /** * Returns a list containing all elements except first [n] elements. * * @throws IllegalArgumentException if [n] is negative. * * @sample samples.collections.Collections.Transformations.drop */ public fun ShortArray.drop(n: Int): List { require(n >= 0) { "Requested element count $n is less than zero." } return takeLast((size - n).coerceAtLeast(0)) } /** * Returns a list containing all elements except first [n] elements. * * @throws IllegalArgumentException if [n] is negative. * * @sample samples.collections.Collections.Transformations.drop */ public fun IntArray.drop(n: Int): List { require(n >= 0) { "Requested element count $n is less than zero." } return takeLast((size - n).coerceAtLeast(0)) } /** * Returns a list containing all elements except first [n] elements. * * @throws IllegalArgumentException if [n] is negative. * * @sample samples.collections.Collections.Transformations.drop */ public fun LongArray.drop(n: Int): List { require(n >= 0) { "Requested element count $n is less than zero." } return takeLast((size - n).coerceAtLeast(0)) } /** * Returns a list containing all elements except first [n] elements. * * @throws IllegalArgumentException if [n] is negative. * * @sample samples.collections.Collections.Transformations.drop */ public fun FloatArray.drop(n: Int): List { require(n >= 0) { "Requested element count $n is less than zero." } return takeLast((size - n).coerceAtLeast(0)) } /** * Returns a list containing all elements except first [n] elements. * * @throws IllegalArgumentException if [n] is negative. * * @sample samples.collections.Collections.Transformations.drop */ public fun DoubleArray.drop(n: Int): List { require(n >= 0) { "Requested element count $n is less than zero." } return takeLast((size - n).coerceAtLeast(0)) } /** * Returns a list containing all elements except first [n] elements. * * @throws IllegalArgumentException if [n] is negative. * * @sample samples.collections.Collections.Transformations.drop */ public fun BooleanArray.drop(n: Int): List { require(n >= 0) { "Requested element count $n is less than zero." } return takeLast((size - n).coerceAtLeast(0)) } /** * Returns a list containing all elements except first [n] elements. * * @throws IllegalArgumentException if [n] is negative. * * @sample samples.collections.Collections.Transformations.drop */ public fun CharArray.drop(n: Int): List { require(n >= 0) { "Requested element count $n is less than zero." } return takeLast((size - n).coerceAtLeast(0)) } /** * Returns a list containing all elements except last [n] elements. * * @throws IllegalArgumentException if [n] is negative. * * @sample samples.collections.Collections.Transformations.drop */ public fun Array.dropLast(n: Int): List { require(n >= 0) { "Requested element count $n is less than zero." } return take((size - n).coerceAtLeast(0)) } /** * Returns a list containing all elements except last [n] elements. * * @throws IllegalArgumentException if [n] is negative. * * @sample samples.collections.Collections.Transformations.drop */ public fun ByteArray.dropLast(n: Int): List { require(n >= 0) { "Requested element count $n is less than zero." } return take((size - n).coerceAtLeast(0)) } /** * Returns a list containing all elements except last [n] elements. * * @throws IllegalArgumentException if [n] is negative. * * @sample samples.collections.Collections.Transformations.drop */ public fun ShortArray.dropLast(n: Int): List { require(n >= 0) { "Requested element count $n is less than zero." } return take((size - n).coerceAtLeast(0)) } /** * Returns a list containing all elements except last [n] elements. * * @throws IllegalArgumentException if [n] is negative. * * @sample samples.collections.Collections.Transformations.drop */ public fun IntArray.dropLast(n: Int): List { require(n >= 0) { "Requested element count $n is less than zero." } return take((size - n).coerceAtLeast(0)) } /** * Returns a list containing all elements except last [n] elements. * * @throws IllegalArgumentException if [n] is negative. * * @sample samples.collections.Collections.Transformations.drop */ public fun LongArray.dropLast(n: Int): List { require(n >= 0) { "Requested element count $n is less than zero." } return take((size - n).coerceAtLeast(0)) } /** * Returns a list containing all elements except last [n] elements. * * @throws IllegalArgumentException if [n] is negative. * * @sample samples.collections.Collections.Transformations.drop */ public fun FloatArray.dropLast(n: Int): List { require(n >= 0) { "Requested element count $n is less than zero." } return take((size - n).coerceAtLeast(0)) } /** * Returns a list containing all elements except last [n] elements. * * @throws IllegalArgumentException if [n] is negative. * * @sample samples.collections.Collections.Transformations.drop */ public fun DoubleArray.dropLast(n: Int): List { require(n >= 0) { "Requested element count $n is less than zero." } return take((size - n).coerceAtLeast(0)) } /** * Returns a list containing all elements except last [n] elements. * * @throws IllegalArgumentException if [n] is negative. * * @sample samples.collections.Collections.Transformations.drop */ public fun BooleanArray.dropLast(n: Int): List { require(n >= 0) { "Requested element count $n is less than zero." } return take((size - n).coerceAtLeast(0)) } /** * Returns a list containing all elements except last [n] elements. * * @throws IllegalArgumentException if [n] is negative. * * @sample samples.collections.Collections.Transformations.drop */ public fun CharArray.dropLast(n: Int): List { require(n >= 0) { "Requested element count $n is less than zero." } return take((size - n).coerceAtLeast(0)) } /** * Returns a list containing all elements except last elements that satisfy the given [predicate]. * * @sample samples.collections.Collections.Transformations.drop */ public inline fun Array.dropLastWhile(predicate: (T) -> Boolean): List { for (index in lastIndex downTo 0) { if (!predicate(this[index])) { return take(index + 1) } } return emptyList() } /** * Returns a list containing all elements except last elements that satisfy the given [predicate]. * * @sample samples.collections.Collections.Transformations.drop */ public inline fun ByteArray.dropLastWhile(predicate: (Byte) -> Boolean): List { for (index in lastIndex downTo 0) { if (!predicate(this[index])) { return take(index + 1) } } return emptyList() } /** * Returns a list containing all elements except last elements that satisfy the given [predicate]. * * @sample samples.collections.Collections.Transformations.drop */ public inline fun ShortArray.dropLastWhile(predicate: (Short) -> Boolean): List { for (index in lastIndex downTo 0) { if (!predicate(this[index])) { return take(index + 1) } } return emptyList() } /** * Returns a list containing all elements except last elements that satisfy the given [predicate]. * * @sample samples.collections.Collections.Transformations.drop */ public inline fun IntArray.dropLastWhile(predicate: (Int) -> Boolean): List { for (index in lastIndex downTo 0) { if (!predicate(this[index])) { return take(index + 1) } } return emptyList() } /** * Returns a list containing all elements except last elements that satisfy the given [predicate]. * * @sample samples.collections.Collections.Transformations.drop */ public inline fun LongArray.dropLastWhile(predicate: (Long) -> Boolean): List { for (index in lastIndex downTo 0) { if (!predicate(this[index])) { return take(index + 1) } } return emptyList() } /** * Returns a list containing all elements except last elements that satisfy the given [predicate]. * * @sample samples.collections.Collections.Transformations.drop */ public inline fun FloatArray.dropLastWhile(predicate: (Float) -> Boolean): List { for (index in lastIndex downTo 0) { if (!predicate(this[index])) { return take(index + 1) } } return emptyList() } /** * Returns a list containing all elements except last elements that satisfy the given [predicate]. * * @sample samples.collections.Collections.Transformations.drop */ public inline fun DoubleArray.dropLastWhile(predicate: (Double) -> Boolean): List { for (index in lastIndex downTo 0) { if (!predicate(this[index])) { return take(index + 1) } } return emptyList() } /** * Returns a list containing all elements except last elements that satisfy the given [predicate]. * * @sample samples.collections.Collections.Transformations.drop */ public inline fun BooleanArray.dropLastWhile(predicate: (Boolean) -> Boolean): List { for (index in lastIndex downTo 0) { if (!predicate(this[index])) { return take(index + 1) } } return emptyList() } /** * Returns a list containing all elements except last elements that satisfy the given [predicate]. * * @sample samples.collections.Collections.Transformations.drop */ public inline fun CharArray.dropLastWhile(predicate: (Char) -> Boolean): List { for (index in lastIndex downTo 0) { if (!predicate(this[index])) { return take(index + 1) } } return emptyList() } /** * Returns a list containing all elements except first elements that satisfy the given [predicate]. * * @sample samples.collections.Collections.Transformations.drop */ public inline fun Array.dropWhile(predicate: (T) -> Boolean): List { var yielding = false val list = ArrayList() for (item in this) if (yielding) list.add(item) else if (!predicate(item)) { list.add(item) yielding = true } return list } /** * Returns a list containing all elements except first elements that satisfy the given [predicate]. * * @sample samples.collections.Collections.Transformations.drop */ public inline fun ByteArray.dropWhile(predicate: (Byte) -> Boolean): List { var yielding = false val list = ArrayList() for (item in this) if (yielding) list.add(item) else if (!predicate(item)) { list.add(item) yielding = true } return list } /** * Returns a list containing all elements except first elements that satisfy the given [predicate]. * * @sample samples.collections.Collections.Transformations.drop */ public inline fun ShortArray.dropWhile(predicate: (Short) -> Boolean): List { var yielding = false val list = ArrayList() for (item in this) if (yielding) list.add(item) else if (!predicate(item)) { list.add(item) yielding = true } return list } /** * Returns a list containing all elements except first elements that satisfy the given [predicate]. * * @sample samples.collections.Collections.Transformations.drop */ public inline fun IntArray.dropWhile(predicate: (Int) -> Boolean): List { var yielding = false val list = ArrayList() for (item in this) if (yielding) list.add(item) else if (!predicate(item)) { list.add(item) yielding = true } return list } /** * Returns a list containing all elements except first elements that satisfy the given [predicate]. * * @sample samples.collections.Collections.Transformations.drop */ public inline fun LongArray.dropWhile(predicate: (Long) -> Boolean): List { var yielding = false val list = ArrayList() for (item in this) if (yielding) list.add(item) else if (!predicate(item)) { list.add(item) yielding = true } return list } /** * Returns a list containing all elements except first elements that satisfy the given [predicate]. * * @sample samples.collections.Collections.Transformations.drop */ public inline fun FloatArray.dropWhile(predicate: (Float) -> Boolean): List { var yielding = false val list = ArrayList() for (item in this) if (yielding) list.add(item) else if (!predicate(item)) { list.add(item) yielding = true } return list } /** * Returns a list containing all elements except first elements that satisfy the given [predicate]. * * @sample samples.collections.Collections.Transformations.drop */ public inline fun DoubleArray.dropWhile(predicate: (Double) -> Boolean): List { var yielding = false val list = ArrayList() for (item in this) if (yielding) list.add(item) else if (!predicate(item)) { list.add(item) yielding = true } return list } /** * Returns a list containing all elements except first elements that satisfy the given [predicate]. * * @sample samples.collections.Collections.Transformations.drop */ public inline fun BooleanArray.dropWhile(predicate: (Boolean) -> Boolean): List { var yielding = false val list = ArrayList() for (item in this) if (yielding) list.add(item) else if (!predicate(item)) { list.add(item) yielding = true } return list } /** * Returns a list containing all elements except first elements that satisfy the given [predicate]. * * @sample samples.collections.Collections.Transformations.drop */ public inline fun CharArray.dropWhile(predicate: (Char) -> Boolean): List { var yielding = false val list = ArrayList() for (item in this) if (yielding) list.add(item) else if (!predicate(item)) { list.add(item) yielding = true } return list } /** * Returns a list containing only elements matching the given [predicate]. * * @sample samples.collections.Collections.Filtering.filter */ public inline fun Array.filter(predicate: (T) -> Boolean): List { return filterTo(ArrayList(), predicate) } /** * Returns a list containing only elements matching the given [predicate]. * * @sample samples.collections.Collections.Filtering.filter */ public inline fun ByteArray.filter(predicate: (Byte) -> Boolean): List { return filterTo(ArrayList(), predicate) } /** * Returns a list containing only elements matching the given [predicate]. * * @sample samples.collections.Collections.Filtering.filter */ public inline fun ShortArray.filter(predicate: (Short) -> Boolean): List { return filterTo(ArrayList(), predicate) } /** * Returns a list containing only elements matching the given [predicate]. * * @sample samples.collections.Collections.Filtering.filter */ public inline fun IntArray.filter(predicate: (Int) -> Boolean): List { return filterTo(ArrayList(), predicate) } /** * Returns a list containing only elements matching the given [predicate]. * * @sample samples.collections.Collections.Filtering.filter */ public inline fun LongArray.filter(predicate: (Long) -> Boolean): List { return filterTo(ArrayList(), predicate) } /** * Returns a list containing only elements matching the given [predicate]. * * @sample samples.collections.Collections.Filtering.filter */ public inline fun FloatArray.filter(predicate: (Float) -> Boolean): List { return filterTo(ArrayList(), predicate) } /** * Returns a list containing only elements matching the given [predicate]. * * @sample samples.collections.Collections.Filtering.filter */ public inline fun DoubleArray.filter(predicate: (Double) -> Boolean): List { return filterTo(ArrayList(), predicate) } /** * Returns a list containing only elements matching the given [predicate]. * * @sample samples.collections.Collections.Filtering.filter */ public inline fun BooleanArray.filter(predicate: (Boolean) -> Boolean): List { return filterTo(ArrayList(), predicate) } /** * Returns a list containing only elements matching the given [predicate]. * * @sample samples.collections.Collections.Filtering.filter */ public inline fun CharArray.filter(predicate: (Char) -> Boolean): List { return filterTo(ArrayList(), predicate) } /** * Returns a list containing only elements matching the given [predicate]. * @param [predicate] function that takes the index of an element and the element itself * and returns the result of predicate evaluation on the element. * * @sample samples.collections.Collections.Filtering.filterIndexed */ public inline fun Array.filterIndexed(predicate: (index: Int, T) -> Boolean): List { return filterIndexedTo(ArrayList(), predicate) } /** * Returns a list containing only elements matching the given [predicate]. * @param [predicate] function that takes the index of an element and the element itself * and returns the result of predicate evaluation on the element. * * @sample samples.collections.Collections.Filtering.filterIndexed */ public inline fun ByteArray.filterIndexed(predicate: (index: Int, Byte) -> Boolean): List { return filterIndexedTo(ArrayList(), predicate) } /** * Returns a list containing only elements matching the given [predicate]. * @param [predicate] function that takes the index of an element and the element itself * and returns the result of predicate evaluation on the element. * * @sample samples.collections.Collections.Filtering.filterIndexed */ public inline fun ShortArray.filterIndexed(predicate: (index: Int, Short) -> Boolean): List { return filterIndexedTo(ArrayList(), predicate) } /** * Returns a list containing only elements matching the given [predicate]. * @param [predicate] function that takes the index of an element and the element itself * and returns the result of predicate evaluation on the element. * * @sample samples.collections.Collections.Filtering.filterIndexed */ public inline fun IntArray.filterIndexed(predicate: (index: Int, Int) -> Boolean): List { return filterIndexedTo(ArrayList(), predicate) } /** * Returns a list containing only elements matching the given [predicate]. * @param [predicate] function that takes the index of an element and the element itself * and returns the result of predicate evaluation on the element. * * @sample samples.collections.Collections.Filtering.filterIndexed */ public inline fun LongArray.filterIndexed(predicate: (index: Int, Long) -> Boolean): List { return filterIndexedTo(ArrayList(), predicate) } /** * Returns a list containing only elements matching the given [predicate]. * @param [predicate] function that takes the index of an element and the element itself * and returns the result of predicate evaluation on the element. * * @sample samples.collections.Collections.Filtering.filterIndexed */ public inline fun FloatArray.filterIndexed(predicate: (index: Int, Float) -> Boolean): List { return filterIndexedTo(ArrayList(), predicate) } /** * Returns a list containing only elements matching the given [predicate]. * @param [predicate] function that takes the index of an element and the element itself * and returns the result of predicate evaluation on the element. * * @sample samples.collections.Collections.Filtering.filterIndexed */ public inline fun DoubleArray.filterIndexed(predicate: (index: Int, Double) -> Boolean): List { return filterIndexedTo(ArrayList(), predicate) } /** * Returns a list containing only elements matching the given [predicate]. * @param [predicate] function that takes the index of an element and the element itself * and returns the result of predicate evaluation on the element. * * @sample samples.collections.Collections.Filtering.filterIndexed */ public inline fun BooleanArray.filterIndexed(predicate: (index: Int, Boolean) -> Boolean): List { return filterIndexedTo(ArrayList(), predicate) } /** * Returns a list containing only elements matching the given [predicate]. * @param [predicate] function that takes the index of an element and the element itself * and returns the result of predicate evaluation on the element. * * @sample samples.collections.Collections.Filtering.filterIndexed */ public inline fun CharArray.filterIndexed(predicate: (index: Int, Char) -> Boolean): List { return filterIndexedTo(ArrayList(), predicate) } /** * Appends all elements matching the given [predicate] to the given [destination]. * @param [predicate] function that takes the index of an element and the element itself * and returns the result of predicate evaluation on the element. * * @sample samples.collections.Collections.Filtering.filterIndexedTo */ public inline fun > Array.filterIndexedTo(destination: C, predicate: (index: Int, T) -> Boolean): C { forEachIndexed { index, element -> if (predicate(index, element)) destination.add(element) } return destination } /** * Appends all elements matching the given [predicate] to the given [destination]. * @param [predicate] function that takes the index of an element and the element itself * and returns the result of predicate evaluation on the element. * * @sample samples.collections.Collections.Filtering.filterIndexedTo */ public inline fun > ByteArray.filterIndexedTo(destination: C, predicate: (index: Int, Byte) -> Boolean): C { forEachIndexed { index, element -> if (predicate(index, element)) destination.add(element) } return destination } /** * Appends all elements matching the given [predicate] to the given [destination]. * @param [predicate] function that takes the index of an element and the element itself * and returns the result of predicate evaluation on the element. * * @sample samples.collections.Collections.Filtering.filterIndexedTo */ public inline fun > ShortArray.filterIndexedTo(destination: C, predicate: (index: Int, Short) -> Boolean): C { forEachIndexed { index, element -> if (predicate(index, element)) destination.add(element) } return destination } /** * Appends all elements matching the given [predicate] to the given [destination]. * @param [predicate] function that takes the index of an element and the element itself * and returns the result of predicate evaluation on the element. * * @sample samples.collections.Collections.Filtering.filterIndexedTo */ public inline fun > IntArray.filterIndexedTo(destination: C, predicate: (index: Int, Int) -> Boolean): C { forEachIndexed { index, element -> if (predicate(index, element)) destination.add(element) } return destination } /** * Appends all elements matching the given [predicate] to the given [destination]. * @param [predicate] function that takes the index of an element and the element itself * and returns the result of predicate evaluation on the element. * * @sample samples.collections.Collections.Filtering.filterIndexedTo */ public inline fun > LongArray.filterIndexedTo(destination: C, predicate: (index: Int, Long) -> Boolean): C { forEachIndexed { index, element -> if (predicate(index, element)) destination.add(element) } return destination } /** * Appends all elements matching the given [predicate] to the given [destination]. * @param [predicate] function that takes the index of an element and the element itself * and returns the result of predicate evaluation on the element. * * @sample samples.collections.Collections.Filtering.filterIndexedTo */ public inline fun > FloatArray.filterIndexedTo(destination: C, predicate: (index: Int, Float) -> Boolean): C { forEachIndexed { index, element -> if (predicate(index, element)) destination.add(element) } return destination } /** * Appends all elements matching the given [predicate] to the given [destination]. * @param [predicate] function that takes the index of an element and the element itself * and returns the result of predicate evaluation on the element. * * @sample samples.collections.Collections.Filtering.filterIndexedTo */ public inline fun > DoubleArray.filterIndexedTo(destination: C, predicate: (index: Int, Double) -> Boolean): C { forEachIndexed { index, element -> if (predicate(index, element)) destination.add(element) } return destination } /** * Appends all elements matching the given [predicate] to the given [destination]. * @param [predicate] function that takes the index of an element and the element itself * and returns the result of predicate evaluation on the element. * * @sample samples.collections.Collections.Filtering.filterIndexedTo */ public inline fun > BooleanArray.filterIndexedTo(destination: C, predicate: (index: Int, Boolean) -> Boolean): C { forEachIndexed { index, element -> if (predicate(index, element)) destination.add(element) } return destination } /** * Appends all elements matching the given [predicate] to the given [destination]. * @param [predicate] function that takes the index of an element and the element itself * and returns the result of predicate evaluation on the element. * * @sample samples.collections.Collections.Filtering.filterIndexedTo */ public inline fun > CharArray.filterIndexedTo(destination: C, predicate: (index: Int, Char) -> Boolean): C { forEachIndexed { index, element -> if (predicate(index, element)) destination.add(element) } return destination } /** * Returns a list containing all elements that are instances of specified type parameter R. * * @sample samples.collections.Collections.Filtering.filterIsInstance */ public inline fun Array<*>.filterIsInstance(): List<@kotlin.internal.NoInfer R> { return filterIsInstanceTo(ArrayList()) } /** * Appends all elements that are instances of specified type parameter R to the given [destination]. * * @sample samples.collections.Collections.Filtering.filterIsInstanceTo */ public inline fun > Array<*>.filterIsInstanceTo(destination: C): C { for (element in this) if (element is R) destination.add(element) return destination } /** * Returns a list containing all elements not matching the given [predicate]. * * @sample samples.collections.Collections.Filtering.filter */ public inline fun Array.filterNot(predicate: (T) -> Boolean): List { return filterNotTo(ArrayList(), predicate) } /** * Returns a list containing all elements not matching the given [predicate]. * * @sample samples.collections.Collections.Filtering.filter */ public inline fun ByteArray.filterNot(predicate: (Byte) -> Boolean): List { return filterNotTo(ArrayList(), predicate) } /** * Returns a list containing all elements not matching the given [predicate]. * * @sample samples.collections.Collections.Filtering.filter */ public inline fun ShortArray.filterNot(predicate: (Short) -> Boolean): List { return filterNotTo(ArrayList(), predicate) } /** * Returns a list containing all elements not matching the given [predicate]. * * @sample samples.collections.Collections.Filtering.filter */ public inline fun IntArray.filterNot(predicate: (Int) -> Boolean): List { return filterNotTo(ArrayList(), predicate) } /** * Returns a list containing all elements not matching the given [predicate]. * * @sample samples.collections.Collections.Filtering.filter */ public inline fun LongArray.filterNot(predicate: (Long) -> Boolean): List { return filterNotTo(ArrayList(), predicate) } /** * Returns a list containing all elements not matching the given [predicate]. * * @sample samples.collections.Collections.Filtering.filter */ public inline fun FloatArray.filterNot(predicate: (Float) -> Boolean): List { return filterNotTo(ArrayList(), predicate) } /** * Returns a list containing all elements not matching the given [predicate]. * * @sample samples.collections.Collections.Filtering.filter */ public inline fun DoubleArray.filterNot(predicate: (Double) -> Boolean): List { return filterNotTo(ArrayList(), predicate) } /** * Returns a list containing all elements not matching the given [predicate]. * * @sample samples.collections.Collections.Filtering.filter */ public inline fun BooleanArray.filterNot(predicate: (Boolean) -> Boolean): List { return filterNotTo(ArrayList(), predicate) } /** * Returns a list containing all elements not matching the given [predicate]. * * @sample samples.collections.Collections.Filtering.filter */ public inline fun CharArray.filterNot(predicate: (Char) -> Boolean): List { return filterNotTo(ArrayList(), predicate) } /** * Returns a list containing all elements that are not `null`. * * @sample samples.collections.Collections.Filtering.filterNotNull */ public fun Array.filterNotNull(): List { return filterNotNullTo(ArrayList()) } /** * Appends all elements that are not `null` to the given [destination]. * * @sample samples.collections.Collections.Filtering.filterNotNullTo */ public fun , T : Any> Array.filterNotNullTo(destination: C): C { for (element in this) if (element != null) destination.add(element) return destination } /** * Appends all elements not matching the given [predicate] to the given [destination]. * * @sample samples.collections.Collections.Filtering.filterTo */ public inline fun > Array.filterNotTo(destination: C, predicate: (T) -> Boolean): C { for (element in this) if (!predicate(element)) destination.add(element) return destination } /** * Appends all elements not matching the given [predicate] to the given [destination]. * * @sample samples.collections.Collections.Filtering.filterTo */ public inline fun > ByteArray.filterNotTo(destination: C, predicate: (Byte) -> Boolean): C { for (element in this) if (!predicate(element)) destination.add(element) return destination } /** * Appends all elements not matching the given [predicate] to the given [destination]. * * @sample samples.collections.Collections.Filtering.filterTo */ public inline fun > ShortArray.filterNotTo(destination: C, predicate: (Short) -> Boolean): C { for (element in this) if (!predicate(element)) destination.add(element) return destination } /** * Appends all elements not matching the given [predicate] to the given [destination]. * * @sample samples.collections.Collections.Filtering.filterTo */ public inline fun > IntArray.filterNotTo(destination: C, predicate: (Int) -> Boolean): C { for (element in this) if (!predicate(element)) destination.add(element) return destination } /** * Appends all elements not matching the given [predicate] to the given [destination]. * * @sample samples.collections.Collections.Filtering.filterTo */ public inline fun > LongArray.filterNotTo(destination: C, predicate: (Long) -> Boolean): C { for (element in this) if (!predicate(element)) destination.add(element) return destination } /** * Appends all elements not matching the given [predicate] to the given [destination]. * * @sample samples.collections.Collections.Filtering.filterTo */ public inline fun > FloatArray.filterNotTo(destination: C, predicate: (Float) -> Boolean): C { for (element in this) if (!predicate(element)) destination.add(element) return destination } /** * Appends all elements not matching the given [predicate] to the given [destination]. * * @sample samples.collections.Collections.Filtering.filterTo */ public inline fun > DoubleArray.filterNotTo(destination: C, predicate: (Double) -> Boolean): C { for (element in this) if (!predicate(element)) destination.add(element) return destination } /** * Appends all elements not matching the given [predicate] to the given [destination]. * * @sample samples.collections.Collections.Filtering.filterTo */ public inline fun > BooleanArray.filterNotTo(destination: C, predicate: (Boolean) -> Boolean): C { for (element in this) if (!predicate(element)) destination.add(element) return destination } /** * Appends all elements not matching the given [predicate] to the given [destination]. * * @sample samples.collections.Collections.Filtering.filterTo */ public inline fun > CharArray.filterNotTo(destination: C, predicate: (Char) -> Boolean): C { for (element in this) if (!predicate(element)) destination.add(element) return destination } /** * Appends all elements matching the given [predicate] to the given [destination]. * * @sample samples.collections.Collections.Filtering.filterTo */ public inline fun > Array.filterTo(destination: C, predicate: (T) -> Boolean): C { for (element in this) if (predicate(element)) destination.add(element) return destination } /** * Appends all elements matching the given [predicate] to the given [destination]. * * @sample samples.collections.Collections.Filtering.filterTo */ public inline fun > ByteArray.filterTo(destination: C, predicate: (Byte) -> Boolean): C { for (element in this) if (predicate(element)) destination.add(element) return destination } /** * Appends all elements matching the given [predicate] to the given [destination]. * * @sample samples.collections.Collections.Filtering.filterTo */ public inline fun > ShortArray.filterTo(destination: C, predicate: (Short) -> Boolean): C { for (element in this) if (predicate(element)) destination.add(element) return destination } /** * Appends all elements matching the given [predicate] to the given [destination]. * * @sample samples.collections.Collections.Filtering.filterTo */ public inline fun > IntArray.filterTo(destination: C, predicate: (Int) -> Boolean): C { for (element in this) if (predicate(element)) destination.add(element) return destination } /** * Appends all elements matching the given [predicate] to the given [destination]. * * @sample samples.collections.Collections.Filtering.filterTo */ public inline fun > LongArray.filterTo(destination: C, predicate: (Long) -> Boolean): C { for (element in this) if (predicate(element)) destination.add(element) return destination } /** * Appends all elements matching the given [predicate] to the given [destination]. * * @sample samples.collections.Collections.Filtering.filterTo */ public inline fun > FloatArray.filterTo(destination: C, predicate: (Float) -> Boolean): C { for (element in this) if (predicate(element)) destination.add(element) return destination } /** * Appends all elements matching the given [predicate] to the given [destination]. * * @sample samples.collections.Collections.Filtering.filterTo */ public inline fun > DoubleArray.filterTo(destination: C, predicate: (Double) -> Boolean): C { for (element in this) if (predicate(element)) destination.add(element) return destination } /** * Appends all elements matching the given [predicate] to the given [destination]. * * @sample samples.collections.Collections.Filtering.filterTo */ public inline fun > BooleanArray.filterTo(destination: C, predicate: (Boolean) -> Boolean): C { for (element in this) if (predicate(element)) destination.add(element) return destination } /** * Appends all elements matching the given [predicate] to the given [destination]. * * @sample samples.collections.Collections.Filtering.filterTo */ public inline fun > CharArray.filterTo(destination: C, predicate: (Char) -> Boolean): C { for (element in this) if (predicate(element)) destination.add(element) return destination } /** * Returns a list containing elements at indices in the specified [indices] range. */ public fun Array.slice(indices: IntRange): List { if (indices.isEmpty()) return listOf() return copyOfRange(indices.start, indices.endInclusive + 1).asList() } /** * Returns a list containing elements at indices in the specified [indices] range. */ public fun ByteArray.slice(indices: IntRange): List { if (indices.isEmpty()) return listOf() return copyOfRange(indices.start, indices.endInclusive + 1).asList() } /** * Returns a list containing elements at indices in the specified [indices] range. */ public fun ShortArray.slice(indices: IntRange): List { if (indices.isEmpty()) return listOf() return copyOfRange(indices.start, indices.endInclusive + 1).asList() } /** * Returns a list containing elements at indices in the specified [indices] range. */ public fun IntArray.slice(indices: IntRange): List { if (indices.isEmpty()) return listOf() return copyOfRange(indices.start, indices.endInclusive + 1).asList() } /** * Returns a list containing elements at indices in the specified [indices] range. */ public fun LongArray.slice(indices: IntRange): List { if (indices.isEmpty()) return listOf() return copyOfRange(indices.start, indices.endInclusive + 1).asList() } /** * Returns a list containing elements at indices in the specified [indices] range. */ public fun FloatArray.slice(indices: IntRange): List { if (indices.isEmpty()) return listOf() return copyOfRange(indices.start, indices.endInclusive + 1).asList() } /** * Returns a list containing elements at indices in the specified [indices] range. */ public fun DoubleArray.slice(indices: IntRange): List { if (indices.isEmpty()) return listOf() return copyOfRange(indices.start, indices.endInclusive + 1).asList() } /** * Returns a list containing elements at indices in the specified [indices] range. */ public fun BooleanArray.slice(indices: IntRange): List { if (indices.isEmpty()) return listOf() return copyOfRange(indices.start, indices.endInclusive + 1).asList() } /** * Returns a list containing elements at indices in the specified [indices] range. */ public fun CharArray.slice(indices: IntRange): List { if (indices.isEmpty()) return listOf() return copyOfRange(indices.start, indices.endInclusive + 1).asList() } /** * Returns a list containing elements at specified [indices]. */ public fun Array.slice(indices: Iterable): List { val size = indices.collectionSizeOrDefault(10) if (size == 0) return emptyList() val list = ArrayList(size) for (index in indices) { list.add(get(index)) } return list } /** * Returns a list containing elements at specified [indices]. */ public fun ByteArray.slice(indices: Iterable): List { val size = indices.collectionSizeOrDefault(10) if (size == 0) return emptyList() val list = ArrayList(size) for (index in indices) { list.add(get(index)) } return list } /** * Returns a list containing elements at specified [indices]. */ public fun ShortArray.slice(indices: Iterable): List { val size = indices.collectionSizeOrDefault(10) if (size == 0) return emptyList() val list = ArrayList(size) for (index in indices) { list.add(get(index)) } return list } /** * Returns a list containing elements at specified [indices]. */ public fun IntArray.slice(indices: Iterable): List { val size = indices.collectionSizeOrDefault(10) if (size == 0) return emptyList() val list = ArrayList(size) for (index in indices) { list.add(get(index)) } return list } /** * Returns a list containing elements at specified [indices]. */ public fun LongArray.slice(indices: Iterable): List { val size = indices.collectionSizeOrDefault(10) if (size == 0) return emptyList() val list = ArrayList(size) for (index in indices) { list.add(get(index)) } return list } /** * Returns a list containing elements at specified [indices]. */ public fun FloatArray.slice(indices: Iterable): List { val size = indices.collectionSizeOrDefault(10) if (size == 0) return emptyList() val list = ArrayList(size) for (index in indices) { list.add(get(index)) } return list } /** * Returns a list containing elements at specified [indices]. */ public fun DoubleArray.slice(indices: Iterable): List { val size = indices.collectionSizeOrDefault(10) if (size == 0) return emptyList() val list = ArrayList(size) for (index in indices) { list.add(get(index)) } return list } /** * Returns a list containing elements at specified [indices]. */ public fun BooleanArray.slice(indices: Iterable): List { val size = indices.collectionSizeOrDefault(10) if (size == 0) return emptyList() val list = ArrayList(size) for (index in indices) { list.add(get(index)) } return list } /** * Returns a list containing elements at specified [indices]. */ public fun CharArray.slice(indices: Iterable): List { val size = indices.collectionSizeOrDefault(10) if (size == 0) return emptyList() val list = ArrayList(size) for (index in indices) { list.add(get(index)) } return list } /** * Returns an array containing elements of this array at specified [indices]. */ public fun Array.sliceArray(indices: Collection): Array { val result = arrayOfNulls(this, indices.size) var targetIndex = 0 for (sourceIndex in indices) { result[targetIndex++] = this[sourceIndex] } return result } /** * Returns an array containing elements of this array at specified [indices]. */ public fun ByteArray.sliceArray(indices: Collection): ByteArray { val result = ByteArray(indices.size) var targetIndex = 0 for (sourceIndex in indices) { result[targetIndex++] = this[sourceIndex] } return result } /** * Returns an array containing elements of this array at specified [indices]. */ public fun ShortArray.sliceArray(indices: Collection): ShortArray { val result = ShortArray(indices.size) var targetIndex = 0 for (sourceIndex in indices) { result[targetIndex++] = this[sourceIndex] } return result } /** * Returns an array containing elements of this array at specified [indices]. */ public fun IntArray.sliceArray(indices: Collection): IntArray { val result = IntArray(indices.size) var targetIndex = 0 for (sourceIndex in indices) { result[targetIndex++] = this[sourceIndex] } return result } /** * Returns an array containing elements of this array at specified [indices]. */ public fun LongArray.sliceArray(indices: Collection): LongArray { val result = LongArray(indices.size) var targetIndex = 0 for (sourceIndex in indices) { result[targetIndex++] = this[sourceIndex] } return result } /** * Returns an array containing elements of this array at specified [indices]. */ public fun FloatArray.sliceArray(indices: Collection): FloatArray { val result = FloatArray(indices.size) var targetIndex = 0 for (sourceIndex in indices) { result[targetIndex++] = this[sourceIndex] } return result } /** * Returns an array containing elements of this array at specified [indices]. */ public fun DoubleArray.sliceArray(indices: Collection): DoubleArray { val result = DoubleArray(indices.size) var targetIndex = 0 for (sourceIndex in indices) { result[targetIndex++] = this[sourceIndex] } return result } /** * Returns an array containing elements of this array at specified [indices]. */ public fun BooleanArray.sliceArray(indices: Collection): BooleanArray { val result = BooleanArray(indices.size) var targetIndex = 0 for (sourceIndex in indices) { result[targetIndex++] = this[sourceIndex] } return result } /** * Returns an array containing elements of this array at specified [indices]. */ public fun CharArray.sliceArray(indices: Collection): CharArray { val result = CharArray(indices.size) var targetIndex = 0 for (sourceIndex in indices) { result[targetIndex++] = this[sourceIndex] } return result } /** * Returns an array containing elements at indices in the specified [indices] range. */ public fun Array.sliceArray(indices: IntRange): Array { if (indices.isEmpty()) return copyOfRange(0, 0) return copyOfRange(indices.start, indices.endInclusive + 1) } /** * Returns an array containing elements at indices in the specified [indices] range. */ public fun ByteArray.sliceArray(indices: IntRange): ByteArray { if (indices.isEmpty()) return ByteArray(0) return copyOfRange(indices.start, indices.endInclusive + 1) } /** * Returns an array containing elements at indices in the specified [indices] range. */ public fun ShortArray.sliceArray(indices: IntRange): ShortArray { if (indices.isEmpty()) return ShortArray(0) return copyOfRange(indices.start, indices.endInclusive + 1) } /** * Returns an array containing elements at indices in the specified [indices] range. */ public fun IntArray.sliceArray(indices: IntRange): IntArray { if (indices.isEmpty()) return IntArray(0) return copyOfRange(indices.start, indices.endInclusive + 1) } /** * Returns an array containing elements at indices in the specified [indices] range. */ public fun LongArray.sliceArray(indices: IntRange): LongArray { if (indices.isEmpty()) return LongArray(0) return copyOfRange(indices.start, indices.endInclusive + 1) } /** * Returns an array containing elements at indices in the specified [indices] range. */ public fun FloatArray.sliceArray(indices: IntRange): FloatArray { if (indices.isEmpty()) return FloatArray(0) return copyOfRange(indices.start, indices.endInclusive + 1) } /** * Returns an array containing elements at indices in the specified [indices] range. */ public fun DoubleArray.sliceArray(indices: IntRange): DoubleArray { if (indices.isEmpty()) return DoubleArray(0) return copyOfRange(indices.start, indices.endInclusive + 1) } /** * Returns an array containing elements at indices in the specified [indices] range. */ public fun BooleanArray.sliceArray(indices: IntRange): BooleanArray { if (indices.isEmpty()) return BooleanArray(0) return copyOfRange(indices.start, indices.endInclusive + 1) } /** * Returns an array containing elements at indices in the specified [indices] range. */ public fun CharArray.sliceArray(indices: IntRange): CharArray { if (indices.isEmpty()) return CharArray(0) return copyOfRange(indices.start, indices.endInclusive + 1) } /** * Returns a list containing first [n] elements. * * @throws IllegalArgumentException if [n] is negative. * * @sample samples.collections.Collections.Transformations.take */ public fun Array.take(n: Int): List { require(n >= 0) { "Requested element count $n is less than zero." } if (n == 0) return emptyList() if (n >= size) return toList() if (n == 1) return listOf(this[0]) var count = 0 val list = ArrayList(n) for (item in this) { list.add(item) if (++count == n) break } return list } /** * Returns a list containing first [n] elements. * * @throws IllegalArgumentException if [n] is negative. * * @sample samples.collections.Collections.Transformations.take */ public fun ByteArray.take(n: Int): List { require(n >= 0) { "Requested element count $n is less than zero." } if (n == 0) return emptyList() if (n >= size) return toList() if (n == 1) return listOf(this[0]) var count = 0 val list = ArrayList(n) for (item in this) { list.add(item) if (++count == n) break } return list } /** * Returns a list containing first [n] elements. * * @throws IllegalArgumentException if [n] is negative. * * @sample samples.collections.Collections.Transformations.take */ public fun ShortArray.take(n: Int): List { require(n >= 0) { "Requested element count $n is less than zero." } if (n == 0) return emptyList() if (n >= size) return toList() if (n == 1) return listOf(this[0]) var count = 0 val list = ArrayList(n) for (item in this) { list.add(item) if (++count == n) break } return list } /** * Returns a list containing first [n] elements. * * @throws IllegalArgumentException if [n] is negative. * * @sample samples.collections.Collections.Transformations.take */ public fun IntArray.take(n: Int): List { require(n >= 0) { "Requested element count $n is less than zero." } if (n == 0) return emptyList() if (n >= size) return toList() if (n == 1) return listOf(this[0]) var count = 0 val list = ArrayList(n) for (item in this) { list.add(item) if (++count == n) break } return list } /** * Returns a list containing first [n] elements. * * @throws IllegalArgumentException if [n] is negative. * * @sample samples.collections.Collections.Transformations.take */ public fun LongArray.take(n: Int): List { require(n >= 0) { "Requested element count $n is less than zero." } if (n == 0) return emptyList() if (n >= size) return toList() if (n == 1) return listOf(this[0]) var count = 0 val list = ArrayList(n) for (item in this) { list.add(item) if (++count == n) break } return list } /** * Returns a list containing first [n] elements. * * @throws IllegalArgumentException if [n] is negative. * * @sample samples.collections.Collections.Transformations.take */ public fun FloatArray.take(n: Int): List { require(n >= 0) { "Requested element count $n is less than zero." } if (n == 0) return emptyList() if (n >= size) return toList() if (n == 1) return listOf(this[0]) var count = 0 val list = ArrayList(n) for (item in this) { list.add(item) if (++count == n) break } return list } /** * Returns a list containing first [n] elements. * * @throws IllegalArgumentException if [n] is negative. * * @sample samples.collections.Collections.Transformations.take */ public fun DoubleArray.take(n: Int): List { require(n >= 0) { "Requested element count $n is less than zero." } if (n == 0) return emptyList() if (n >= size) return toList() if (n == 1) return listOf(this[0]) var count = 0 val list = ArrayList(n) for (item in this) { list.add(item) if (++count == n) break } return list } /** * Returns a list containing first [n] elements. * * @throws IllegalArgumentException if [n] is negative. * * @sample samples.collections.Collections.Transformations.take */ public fun BooleanArray.take(n: Int): List { require(n >= 0) { "Requested element count $n is less than zero." } if (n == 0) return emptyList() if (n >= size) return toList() if (n == 1) return listOf(this[0]) var count = 0 val list = ArrayList(n) for (item in this) { list.add(item) if (++count == n) break } return list } /** * Returns a list containing first [n] elements. * * @throws IllegalArgumentException if [n] is negative. * * @sample samples.collections.Collections.Transformations.take */ public fun CharArray.take(n: Int): List { require(n >= 0) { "Requested element count $n is less than zero." } if (n == 0) return emptyList() if (n >= size) return toList() if (n == 1) return listOf(this[0]) var count = 0 val list = ArrayList(n) for (item in this) { list.add(item) if (++count == n) break } return list } /** * Returns a list containing last [n] elements. * * @throws IllegalArgumentException if [n] is negative. * * @sample samples.collections.Collections.Transformations.take */ public fun Array.takeLast(n: Int): List { require(n >= 0) { "Requested element count $n is less than zero." } if (n == 0) return emptyList() val size = size if (n >= size) return toList() if (n == 1) return listOf(this[size - 1]) val list = ArrayList(n) for (index in size - n until size) list.add(this[index]) return list } /** * Returns a list containing last [n] elements. * * @throws IllegalArgumentException if [n] is negative. * * @sample samples.collections.Collections.Transformations.take */ public fun ByteArray.takeLast(n: Int): List { require(n >= 0) { "Requested element count $n is less than zero." } if (n == 0) return emptyList() val size = size if (n >= size) return toList() if (n == 1) return listOf(this[size - 1]) val list = ArrayList(n) for (index in size - n until size) list.add(this[index]) return list } /** * Returns a list containing last [n] elements. * * @throws IllegalArgumentException if [n] is negative. * * @sample samples.collections.Collections.Transformations.take */ public fun ShortArray.takeLast(n: Int): List { require(n >= 0) { "Requested element count $n is less than zero." } if (n == 0) return emptyList() val size = size if (n >= size) return toList() if (n == 1) return listOf(this[size - 1]) val list = ArrayList(n) for (index in size - n until size) list.add(this[index]) return list } /** * Returns a list containing last [n] elements. * * @throws IllegalArgumentException if [n] is negative. * * @sample samples.collections.Collections.Transformations.take */ public fun IntArray.takeLast(n: Int): List { require(n >= 0) { "Requested element count $n is less than zero." } if (n == 0) return emptyList() val size = size if (n >= size) return toList() if (n == 1) return listOf(this[size - 1]) val list = ArrayList(n) for (index in size - n until size) list.add(this[index]) return list } /** * Returns a list containing last [n] elements. * * @throws IllegalArgumentException if [n] is negative. * * @sample samples.collections.Collections.Transformations.take */ public fun LongArray.takeLast(n: Int): List { require(n >= 0) { "Requested element count $n is less than zero." } if (n == 0) return emptyList() val size = size if (n >= size) return toList() if (n == 1) return listOf(this[size - 1]) val list = ArrayList(n) for (index in size - n until size) list.add(this[index]) return list } /** * Returns a list containing last [n] elements. * * @throws IllegalArgumentException if [n] is negative. * * @sample samples.collections.Collections.Transformations.take */ public fun FloatArray.takeLast(n: Int): List { require(n >= 0) { "Requested element count $n is less than zero." } if (n == 0) return emptyList() val size = size if (n >= size) return toList() if (n == 1) return listOf(this[size - 1]) val list = ArrayList(n) for (index in size - n until size) list.add(this[index]) return list } /** * Returns a list containing last [n] elements. * * @throws IllegalArgumentException if [n] is negative. * * @sample samples.collections.Collections.Transformations.take */ public fun DoubleArray.takeLast(n: Int): List { require(n >= 0) { "Requested element count $n is less than zero." } if (n == 0) return emptyList() val size = size if (n >= size) return toList() if (n == 1) return listOf(this[size - 1]) val list = ArrayList(n) for (index in size - n until size) list.add(this[index]) return list } /** * Returns a list containing last [n] elements. * * @throws IllegalArgumentException if [n] is negative. * * @sample samples.collections.Collections.Transformations.take */ public fun BooleanArray.takeLast(n: Int): List { require(n >= 0) { "Requested element count $n is less than zero." } if (n == 0) return emptyList() val size = size if (n >= size) return toList() if (n == 1) return listOf(this[size - 1]) val list = ArrayList(n) for (index in size - n until size) list.add(this[index]) return list } /** * Returns a list containing last [n] elements. * * @throws IllegalArgumentException if [n] is negative. * * @sample samples.collections.Collections.Transformations.take */ public fun CharArray.takeLast(n: Int): List { require(n >= 0) { "Requested element count $n is less than zero." } if (n == 0) return emptyList() val size = size if (n >= size) return toList() if (n == 1) return listOf(this[size - 1]) val list = ArrayList(n) for (index in size - n until size) list.add(this[index]) return list } /** * Returns a list containing last elements satisfying the given [predicate]. * * @sample samples.collections.Collections.Transformations.take */ public inline fun Array.takeLastWhile(predicate: (T) -> Boolean): List { for (index in lastIndex downTo 0) { if (!predicate(this[index])) { return drop(index + 1) } } return toList() } /** * Returns a list containing last elements satisfying the given [predicate]. * * @sample samples.collections.Collections.Transformations.take */ public inline fun ByteArray.takeLastWhile(predicate: (Byte) -> Boolean): List { for (index in lastIndex downTo 0) { if (!predicate(this[index])) { return drop(index + 1) } } return toList() } /** * Returns a list containing last elements satisfying the given [predicate]. * * @sample samples.collections.Collections.Transformations.take */ public inline fun ShortArray.takeLastWhile(predicate: (Short) -> Boolean): List { for (index in lastIndex downTo 0) { if (!predicate(this[index])) { return drop(index + 1) } } return toList() } /** * Returns a list containing last elements satisfying the given [predicate]. * * @sample samples.collections.Collections.Transformations.take */ public inline fun IntArray.takeLastWhile(predicate: (Int) -> Boolean): List { for (index in lastIndex downTo 0) { if (!predicate(this[index])) { return drop(index + 1) } } return toList() } /** * Returns a list containing last elements satisfying the given [predicate]. * * @sample samples.collections.Collections.Transformations.take */ public inline fun LongArray.takeLastWhile(predicate: (Long) -> Boolean): List { for (index in lastIndex downTo 0) { if (!predicate(this[index])) { return drop(index + 1) } } return toList() } /** * Returns a list containing last elements satisfying the given [predicate]. * * @sample samples.collections.Collections.Transformations.take */ public inline fun FloatArray.takeLastWhile(predicate: (Float) -> Boolean): List { for (index in lastIndex downTo 0) { if (!predicate(this[index])) { return drop(index + 1) } } return toList() } /** * Returns a list containing last elements satisfying the given [predicate]. * * @sample samples.collections.Collections.Transformations.take */ public inline fun DoubleArray.takeLastWhile(predicate: (Double) -> Boolean): List { for (index in lastIndex downTo 0) { if (!predicate(this[index])) { return drop(index + 1) } } return toList() } /** * Returns a list containing last elements satisfying the given [predicate]. * * @sample samples.collections.Collections.Transformations.take */ public inline fun BooleanArray.takeLastWhile(predicate: (Boolean) -> Boolean): List { for (index in lastIndex downTo 0) { if (!predicate(this[index])) { return drop(index + 1) } } return toList() } /** * Returns a list containing last elements satisfying the given [predicate]. * * @sample samples.collections.Collections.Transformations.take */ public inline fun CharArray.takeLastWhile(predicate: (Char) -> Boolean): List { for (index in lastIndex downTo 0) { if (!predicate(this[index])) { return drop(index + 1) } } return toList() } /** * Returns a list containing first elements satisfying the given [predicate]. * * @sample samples.collections.Collections.Transformations.take */ public inline fun Array.takeWhile(predicate: (T) -> Boolean): List { val list = ArrayList() for (item in this) { if (!predicate(item)) break list.add(item) } return list } /** * Returns a list containing first elements satisfying the given [predicate]. * * @sample samples.collections.Collections.Transformations.take */ public inline fun ByteArray.takeWhile(predicate: (Byte) -> Boolean): List { val list = ArrayList() for (item in this) { if (!predicate(item)) break list.add(item) } return list } /** * Returns a list containing first elements satisfying the given [predicate]. * * @sample samples.collections.Collections.Transformations.take */ public inline fun ShortArray.takeWhile(predicate: (Short) -> Boolean): List { val list = ArrayList() for (item in this) { if (!predicate(item)) break list.add(item) } return list } /** * Returns a list containing first elements satisfying the given [predicate]. * * @sample samples.collections.Collections.Transformations.take */ public inline fun IntArray.takeWhile(predicate: (Int) -> Boolean): List { val list = ArrayList() for (item in this) { if (!predicate(item)) break list.add(item) } return list } /** * Returns a list containing first elements satisfying the given [predicate]. * * @sample samples.collections.Collections.Transformations.take */ public inline fun LongArray.takeWhile(predicate: (Long) -> Boolean): List { val list = ArrayList() for (item in this) { if (!predicate(item)) break list.add(item) } return list } /** * Returns a list containing first elements satisfying the given [predicate]. * * @sample samples.collections.Collections.Transformations.take */ public inline fun FloatArray.takeWhile(predicate: (Float) -> Boolean): List { val list = ArrayList() for (item in this) { if (!predicate(item)) break list.add(item) } return list } /** * Returns a list containing first elements satisfying the given [predicate]. * * @sample samples.collections.Collections.Transformations.take */ public inline fun DoubleArray.takeWhile(predicate: (Double) -> Boolean): List { val list = ArrayList() for (item in this) { if (!predicate(item)) break list.add(item) } return list } /** * Returns a list containing first elements satisfying the given [predicate]. * * @sample samples.collections.Collections.Transformations.take */ public inline fun BooleanArray.takeWhile(predicate: (Boolean) -> Boolean): List { val list = ArrayList() for (item in this) { if (!predicate(item)) break list.add(item) } return list } /** * Returns a list containing first elements satisfying the given [predicate]. * * @sample samples.collections.Collections.Transformations.take */ public inline fun CharArray.takeWhile(predicate: (Char) -> Boolean): List { val list = ArrayList() for (item in this) { if (!predicate(item)) break list.add(item) } return list } /** * Reverses elements in the array in-place. */ public fun Array.reverse(): Unit { val midPoint = (size / 2) - 1 if (midPoint < 0) return var reverseIndex = lastIndex for (index in 0..midPoint) { val tmp = this[index] this[index] = this[reverseIndex] this[reverseIndex] = tmp reverseIndex-- } } /** * Reverses elements in the array in-place. */ public fun ByteArray.reverse(): Unit { val midPoint = (size / 2) - 1 if (midPoint < 0) return var reverseIndex = lastIndex for (index in 0..midPoint) { val tmp = this[index] this[index] = this[reverseIndex] this[reverseIndex] = tmp reverseIndex-- } } /** * Reverses elements in the array in-place. */ public fun ShortArray.reverse(): Unit { val midPoint = (size / 2) - 1 if (midPoint < 0) return var reverseIndex = lastIndex for (index in 0..midPoint) { val tmp = this[index] this[index] = this[reverseIndex] this[reverseIndex] = tmp reverseIndex-- } } /** * Reverses elements in the array in-place. */ public fun IntArray.reverse(): Unit { val midPoint = (size / 2) - 1 if (midPoint < 0) return var reverseIndex = lastIndex for (index in 0..midPoint) { val tmp = this[index] this[index] = this[reverseIndex] this[reverseIndex] = tmp reverseIndex-- } } /** * Reverses elements in the array in-place. */ public fun LongArray.reverse(): Unit { val midPoint = (size / 2) - 1 if (midPoint < 0) return var reverseIndex = lastIndex for (index in 0..midPoint) { val tmp = this[index] this[index] = this[reverseIndex] this[reverseIndex] = tmp reverseIndex-- } } /** * Reverses elements in the array in-place. */ public fun FloatArray.reverse(): Unit { val midPoint = (size / 2) - 1 if (midPoint < 0) return var reverseIndex = lastIndex for (index in 0..midPoint) { val tmp = this[index] this[index] = this[reverseIndex] this[reverseIndex] = tmp reverseIndex-- } } /** * Reverses elements in the array in-place. */ public fun DoubleArray.reverse(): Unit { val midPoint = (size / 2) - 1 if (midPoint < 0) return var reverseIndex = lastIndex for (index in 0..midPoint) { val tmp = this[index] this[index] = this[reverseIndex] this[reverseIndex] = tmp reverseIndex-- } } /** * Reverses elements in the array in-place. */ public fun BooleanArray.reverse(): Unit { val midPoint = (size / 2) - 1 if (midPoint < 0) return var reverseIndex = lastIndex for (index in 0..midPoint) { val tmp = this[index] this[index] = this[reverseIndex] this[reverseIndex] = tmp reverseIndex-- } } /** * Reverses elements in the array in-place. */ public fun CharArray.reverse(): Unit { val midPoint = (size / 2) - 1 if (midPoint < 0) return var reverseIndex = lastIndex for (index in 0..midPoint) { val tmp = this[index] this[index] = this[reverseIndex] this[reverseIndex] = tmp reverseIndex-- } } /** * Reverses elements of the array in the specified range in-place. * * @param fromIndex the start of the range (inclusive) to reverse. * @param toIndex the end of the range (exclusive) to reverse. * * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array. * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex]. */ @SinceKotlin("1.4") public fun Array.reverse(fromIndex: Int, toIndex: Int): Unit { AbstractList.checkRangeIndexes(fromIndex, toIndex, size) val midPoint = (fromIndex + toIndex) / 2 if (fromIndex == midPoint) return var reverseIndex = toIndex - 1 for (index in fromIndex until midPoint) { val tmp = this[index] this[index] = this[reverseIndex] this[reverseIndex] = tmp reverseIndex-- } } /** * Reverses elements of the array in the specified range in-place. * * @param fromIndex the start of the range (inclusive) to reverse. * @param toIndex the end of the range (exclusive) to reverse. * * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array. * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex]. */ @SinceKotlin("1.4") public fun ByteArray.reverse(fromIndex: Int, toIndex: Int): Unit { AbstractList.checkRangeIndexes(fromIndex, toIndex, size) val midPoint = (fromIndex + toIndex) / 2 if (fromIndex == midPoint) return var reverseIndex = toIndex - 1 for (index in fromIndex until midPoint) { val tmp = this[index] this[index] = this[reverseIndex] this[reverseIndex] = tmp reverseIndex-- } } /** * Reverses elements of the array in the specified range in-place. * * @param fromIndex the start of the range (inclusive) to reverse. * @param toIndex the end of the range (exclusive) to reverse. * * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array. * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex]. */ @SinceKotlin("1.4") public fun ShortArray.reverse(fromIndex: Int, toIndex: Int): Unit { AbstractList.checkRangeIndexes(fromIndex, toIndex, size) val midPoint = (fromIndex + toIndex) / 2 if (fromIndex == midPoint) return var reverseIndex = toIndex - 1 for (index in fromIndex until midPoint) { val tmp = this[index] this[index] = this[reverseIndex] this[reverseIndex] = tmp reverseIndex-- } } /** * Reverses elements of the array in the specified range in-place. * * @param fromIndex the start of the range (inclusive) to reverse. * @param toIndex the end of the range (exclusive) to reverse. * * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array. * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex]. */ @SinceKotlin("1.4") public fun IntArray.reverse(fromIndex: Int, toIndex: Int): Unit { AbstractList.checkRangeIndexes(fromIndex, toIndex, size) val midPoint = (fromIndex + toIndex) / 2 if (fromIndex == midPoint) return var reverseIndex = toIndex - 1 for (index in fromIndex until midPoint) { val tmp = this[index] this[index] = this[reverseIndex] this[reverseIndex] = tmp reverseIndex-- } } /** * Reverses elements of the array in the specified range in-place. * * @param fromIndex the start of the range (inclusive) to reverse. * @param toIndex the end of the range (exclusive) to reverse. * * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array. * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex]. */ @SinceKotlin("1.4") public fun LongArray.reverse(fromIndex: Int, toIndex: Int): Unit { AbstractList.checkRangeIndexes(fromIndex, toIndex, size) val midPoint = (fromIndex + toIndex) / 2 if (fromIndex == midPoint) return var reverseIndex = toIndex - 1 for (index in fromIndex until midPoint) { val tmp = this[index] this[index] = this[reverseIndex] this[reverseIndex] = tmp reverseIndex-- } } /** * Reverses elements of the array in the specified range in-place. * * @param fromIndex the start of the range (inclusive) to reverse. * @param toIndex the end of the range (exclusive) to reverse. * * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array. * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex]. */ @SinceKotlin("1.4") public fun FloatArray.reverse(fromIndex: Int, toIndex: Int): Unit { AbstractList.checkRangeIndexes(fromIndex, toIndex, size) val midPoint = (fromIndex + toIndex) / 2 if (fromIndex == midPoint) return var reverseIndex = toIndex - 1 for (index in fromIndex until midPoint) { val tmp = this[index] this[index] = this[reverseIndex] this[reverseIndex] = tmp reverseIndex-- } } /** * Reverses elements of the array in the specified range in-place. * * @param fromIndex the start of the range (inclusive) to reverse. * @param toIndex the end of the range (exclusive) to reverse. * * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array. * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex]. */ @SinceKotlin("1.4") public fun DoubleArray.reverse(fromIndex: Int, toIndex: Int): Unit { AbstractList.checkRangeIndexes(fromIndex, toIndex, size) val midPoint = (fromIndex + toIndex) / 2 if (fromIndex == midPoint) return var reverseIndex = toIndex - 1 for (index in fromIndex until midPoint) { val tmp = this[index] this[index] = this[reverseIndex] this[reverseIndex] = tmp reverseIndex-- } } /** * Reverses elements of the array in the specified range in-place. * * @param fromIndex the start of the range (inclusive) to reverse. * @param toIndex the end of the range (exclusive) to reverse. * * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array. * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex]. */ @SinceKotlin("1.4") public fun BooleanArray.reverse(fromIndex: Int, toIndex: Int): Unit { AbstractList.checkRangeIndexes(fromIndex, toIndex, size) val midPoint = (fromIndex + toIndex) / 2 if (fromIndex == midPoint) return var reverseIndex = toIndex - 1 for (index in fromIndex until midPoint) { val tmp = this[index] this[index] = this[reverseIndex] this[reverseIndex] = tmp reverseIndex-- } } /** * Reverses elements of the array in the specified range in-place. * * @param fromIndex the start of the range (inclusive) to reverse. * @param toIndex the end of the range (exclusive) to reverse. * * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array. * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex]. */ @SinceKotlin("1.4") public fun CharArray.reverse(fromIndex: Int, toIndex: Int): Unit { AbstractList.checkRangeIndexes(fromIndex, toIndex, size) val midPoint = (fromIndex + toIndex) / 2 if (fromIndex == midPoint) return var reverseIndex = toIndex - 1 for (index in fromIndex until midPoint) { val tmp = this[index] this[index] = this[reverseIndex] this[reverseIndex] = tmp reverseIndex-- } } /** * Returns a list with elements in reversed order. */ public fun Array.reversed(): List { if (isEmpty()) return emptyList() val list = toMutableList() list.reverse() return list } /** * Returns a list with elements in reversed order. */ public fun ByteArray.reversed(): List { if (isEmpty()) return emptyList() val list = toMutableList() list.reverse() return list } /** * Returns a list with elements in reversed order. */ public fun ShortArray.reversed(): List { if (isEmpty()) return emptyList() val list = toMutableList() list.reverse() return list } /** * Returns a list with elements in reversed order. */ public fun IntArray.reversed(): List { if (isEmpty()) return emptyList() val list = toMutableList() list.reverse() return list } /** * Returns a list with elements in reversed order. */ public fun LongArray.reversed(): List { if (isEmpty()) return emptyList() val list = toMutableList() list.reverse() return list } /** * Returns a list with elements in reversed order. */ public fun FloatArray.reversed(): List { if (isEmpty()) return emptyList() val list = toMutableList() list.reverse() return list } /** * Returns a list with elements in reversed order. */ public fun DoubleArray.reversed(): List { if (isEmpty()) return emptyList() val list = toMutableList() list.reverse() return list } /** * Returns a list with elements in reversed order. */ public fun BooleanArray.reversed(): List { if (isEmpty()) return emptyList() val list = toMutableList() list.reverse() return list } /** * Returns a list with elements in reversed order. */ public fun CharArray.reversed(): List { if (isEmpty()) return emptyList() val list = toMutableList() list.reverse() return list } /** * Returns an array with elements of this array in reversed order. */ public fun Array.reversedArray(): Array { if (isEmpty()) return this val result = arrayOfNulls(this, size) val lastIndex = lastIndex for (i in 0..lastIndex) result[lastIndex - i] = this[i] return result } /** * Returns an array with elements of this array in reversed order. */ public fun ByteArray.reversedArray(): ByteArray { if (isEmpty()) return this val result = ByteArray(size) val lastIndex = lastIndex for (i in 0..lastIndex) result[lastIndex - i] = this[i] return result } /** * Returns an array with elements of this array in reversed order. */ public fun ShortArray.reversedArray(): ShortArray { if (isEmpty()) return this val result = ShortArray(size) val lastIndex = lastIndex for (i in 0..lastIndex) result[lastIndex - i] = this[i] return result } /** * Returns an array with elements of this array in reversed order. */ public fun IntArray.reversedArray(): IntArray { if (isEmpty()) return this val result = IntArray(size) val lastIndex = lastIndex for (i in 0..lastIndex) result[lastIndex - i] = this[i] return result } /** * Returns an array with elements of this array in reversed order. */ public fun LongArray.reversedArray(): LongArray { if (isEmpty()) return this val result = LongArray(size) val lastIndex = lastIndex for (i in 0..lastIndex) result[lastIndex - i] = this[i] return result } /** * Returns an array with elements of this array in reversed order. */ public fun FloatArray.reversedArray(): FloatArray { if (isEmpty()) return this val result = FloatArray(size) val lastIndex = lastIndex for (i in 0..lastIndex) result[lastIndex - i] = this[i] return result } /** * Returns an array with elements of this array in reversed order. */ public fun DoubleArray.reversedArray(): DoubleArray { if (isEmpty()) return this val result = DoubleArray(size) val lastIndex = lastIndex for (i in 0..lastIndex) result[lastIndex - i] = this[i] return result } /** * Returns an array with elements of this array in reversed order. */ public fun BooleanArray.reversedArray(): BooleanArray { if (isEmpty()) return this val result = BooleanArray(size) val lastIndex = lastIndex for (i in 0..lastIndex) result[lastIndex - i] = this[i] return result } /** * Returns an array with elements of this array in reversed order. */ public fun CharArray.reversedArray(): CharArray { if (isEmpty()) return this val result = CharArray(size) val lastIndex = lastIndex for (i in 0..lastIndex) result[lastIndex - i] = this[i] return result } /** * Randomly shuffles elements in this array in-place. */ @SinceKotlin("1.4") public fun Array.shuffle(): Unit { shuffle(Random) } /** * Randomly shuffles elements in this array in-place. */ @SinceKotlin("1.4") public fun ByteArray.shuffle(): Unit { shuffle(Random) } /** * Randomly shuffles elements in this array in-place. */ @SinceKotlin("1.4") public fun ShortArray.shuffle(): Unit { shuffle(Random) } /** * Randomly shuffles elements in this array in-place. */ @SinceKotlin("1.4") public fun IntArray.shuffle(): Unit { shuffle(Random) } /** * Randomly shuffles elements in this array in-place. */ @SinceKotlin("1.4") public fun LongArray.shuffle(): Unit { shuffle(Random) } /** * Randomly shuffles elements in this array in-place. */ @SinceKotlin("1.4") public fun FloatArray.shuffle(): Unit { shuffle(Random) } /** * Randomly shuffles elements in this array in-place. */ @SinceKotlin("1.4") public fun DoubleArray.shuffle(): Unit { shuffle(Random) } /** * Randomly shuffles elements in this array in-place. */ @SinceKotlin("1.4") public fun BooleanArray.shuffle(): Unit { shuffle(Random) } /** * Randomly shuffles elements in this array in-place. */ @SinceKotlin("1.4") public fun CharArray.shuffle(): Unit { shuffle(Random) } /** * Randomly shuffles elements in this array in-place using the specified [random] instance as the source of randomness. * * See: [A modern version of Fisher-Yates shuffle algorithm](https://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle#The_modern_algorithm). */ @SinceKotlin("1.4") public fun Array.shuffle(random: Random): Unit { for (i in lastIndex downTo 1) { val j = random.nextInt(i + 1) val copy = this[i] this[i] = this[j] this[j] = copy } } /** * Randomly shuffles elements in this array in-place using the specified [random] instance as the source of randomness. * * See: [A modern version of Fisher-Yates shuffle algorithm](https://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle#The_modern_algorithm). */ @SinceKotlin("1.4") public fun ByteArray.shuffle(random: Random): Unit { for (i in lastIndex downTo 1) { val j = random.nextInt(i + 1) val copy = this[i] this[i] = this[j] this[j] = copy } } /** * Randomly shuffles elements in this array in-place using the specified [random] instance as the source of randomness. * * See: [A modern version of Fisher-Yates shuffle algorithm](https://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle#The_modern_algorithm). */ @SinceKotlin("1.4") public fun ShortArray.shuffle(random: Random): Unit { for (i in lastIndex downTo 1) { val j = random.nextInt(i + 1) val copy = this[i] this[i] = this[j] this[j] = copy } } /** * Randomly shuffles elements in this array in-place using the specified [random] instance as the source of randomness. * * See: [A modern version of Fisher-Yates shuffle algorithm](https://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle#The_modern_algorithm). */ @SinceKotlin("1.4") public fun IntArray.shuffle(random: Random): Unit { for (i in lastIndex downTo 1) { val j = random.nextInt(i + 1) val copy = this[i] this[i] = this[j] this[j] = copy } } /** * Randomly shuffles elements in this array in-place using the specified [random] instance as the source of randomness. * * See: [A modern version of Fisher-Yates shuffle algorithm](https://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle#The_modern_algorithm). */ @SinceKotlin("1.4") public fun LongArray.shuffle(random: Random): Unit { for (i in lastIndex downTo 1) { val j = random.nextInt(i + 1) val copy = this[i] this[i] = this[j] this[j] = copy } } /** * Randomly shuffles elements in this array in-place using the specified [random] instance as the source of randomness. * * See: [A modern version of Fisher-Yates shuffle algorithm](https://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle#The_modern_algorithm). */ @SinceKotlin("1.4") public fun FloatArray.shuffle(random: Random): Unit { for (i in lastIndex downTo 1) { val j = random.nextInt(i + 1) val copy = this[i] this[i] = this[j] this[j] = copy } } /** * Randomly shuffles elements in this array in-place using the specified [random] instance as the source of randomness. * * See: [A modern version of Fisher-Yates shuffle algorithm](https://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle#The_modern_algorithm). */ @SinceKotlin("1.4") public fun DoubleArray.shuffle(random: Random): Unit { for (i in lastIndex downTo 1) { val j = random.nextInt(i + 1) val copy = this[i] this[i] = this[j] this[j] = copy } } /** * Randomly shuffles elements in this array in-place using the specified [random] instance as the source of randomness. * * See: [A modern version of Fisher-Yates shuffle algorithm](https://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle#The_modern_algorithm). */ @SinceKotlin("1.4") public fun BooleanArray.shuffle(random: Random): Unit { for (i in lastIndex downTo 1) { val j = random.nextInt(i + 1) val copy = this[i] this[i] = this[j] this[j] = copy } } /** * Randomly shuffles elements in this array in-place using the specified [random] instance as the source of randomness. * * See: [A modern version of Fisher-Yates shuffle algorithm](https://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle#The_modern_algorithm). */ @SinceKotlin("1.4") public fun CharArray.shuffle(random: Random): Unit { for (i in lastIndex downTo 1) { val j = random.nextInt(i + 1) val copy = this[i] this[i] = this[j] this[j] = copy } } /** * Sorts elements in the array in-place according to natural sort order of the value returned by specified [selector] function. * * The sort is _stable_. It means that elements for which [selector] returned equal values preserve their order * relative to each other after sorting. */ public inline fun > Array.sortBy(crossinline selector: (T) -> R?): Unit { if (size > 1) sortWith(compareBy(selector)) } /** * Sorts elements in the array in-place descending according to natural sort order of the value returned by specified [selector] function. * * The sort is _stable_. It means that elements for which [selector] returned equal values preserve their order * relative to each other after sorting. */ public inline fun > Array.sortByDescending(crossinline selector: (T) -> R?): Unit { if (size > 1) sortWith(compareByDescending(selector)) } /** * Sorts elements in the array in-place descending according to their natural sort order. * * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting. */ public fun > Array.sortDescending(): Unit { sortWith(reverseOrder()) } /** * Sorts elements in the array in-place descending according to their natural sort order. */ public fun ByteArray.sortDescending(): Unit { if (size > 1) { sort() reverse() } } /** * Sorts elements in the array in-place descending according to their natural sort order. */ public fun ShortArray.sortDescending(): Unit { if (size > 1) { sort() reverse() } } /** * Sorts elements in the array in-place descending according to their natural sort order. */ public fun IntArray.sortDescending(): Unit { if (size > 1) { sort() reverse() } } /** * Sorts elements in the array in-place descending according to their natural sort order. */ public fun LongArray.sortDescending(): Unit { if (size > 1) { sort() reverse() } } /** * Sorts elements in the array in-place descending according to their natural sort order. */ public fun FloatArray.sortDescending(): Unit { if (size > 1) { sort() reverse() } } /** * Sorts elements in the array in-place descending according to their natural sort order. */ public fun DoubleArray.sortDescending(): Unit { if (size > 1) { sort() reverse() } } /** * Sorts elements in the array in-place descending according to their natural sort order. */ public fun CharArray.sortDescending(): Unit { if (size > 1) { sort() reverse() } } /** * Returns a list of all elements sorted according to their natural sort order. * * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting. */ public fun > Array.sorted(): List { return sortedArray().asList() } /** * Returns a list of all elements sorted according to their natural sort order. */ public fun ByteArray.sorted(): List { return toTypedArray().apply { sort() }.asList() } /** * Returns a list of all elements sorted according to their natural sort order. */ public fun ShortArray.sorted(): List { return toTypedArray().apply { sort() }.asList() } /** * Returns a list of all elements sorted according to their natural sort order. */ public fun IntArray.sorted(): List { return toTypedArray().apply { sort() }.asList() } /** * Returns a list of all elements sorted according to their natural sort order. */ public fun LongArray.sorted(): List { return toTypedArray().apply { sort() }.asList() } /** * Returns a list of all elements sorted according to their natural sort order. */ public fun FloatArray.sorted(): List { return toTypedArray().apply { sort() }.asList() } /** * Returns a list of all elements sorted according to their natural sort order. */ public fun DoubleArray.sorted(): List { return toTypedArray().apply { sort() }.asList() } /** * Returns a list of all elements sorted according to their natural sort order. */ public fun CharArray.sorted(): List { return toTypedArray().apply { sort() }.asList() } /** * Returns an array with all elements of this array sorted according to their natural sort order. * * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting. */ public fun > Array.sortedArray(): Array { if (isEmpty()) return this return this.copyOf().apply { sort() } } /** * Returns an array with all elements of this array sorted according to their natural sort order. */ public fun ByteArray.sortedArray(): ByteArray { if (isEmpty()) return this return this.copyOf().apply { sort() } } /** * Returns an array with all elements of this array sorted according to their natural sort order. */ public fun ShortArray.sortedArray(): ShortArray { if (isEmpty()) return this return this.copyOf().apply { sort() } } /** * Returns an array with all elements of this array sorted according to their natural sort order. */ public fun IntArray.sortedArray(): IntArray { if (isEmpty()) return this return this.copyOf().apply { sort() } } /** * Returns an array with all elements of this array sorted according to their natural sort order. */ public fun LongArray.sortedArray(): LongArray { if (isEmpty()) return this return this.copyOf().apply { sort() } } /** * Returns an array with all elements of this array sorted according to their natural sort order. */ public fun FloatArray.sortedArray(): FloatArray { if (isEmpty()) return this return this.copyOf().apply { sort() } } /** * Returns an array with all elements of this array sorted according to their natural sort order. */ public fun DoubleArray.sortedArray(): DoubleArray { if (isEmpty()) return this return this.copyOf().apply { sort() } } /** * Returns an array with all elements of this array sorted according to their natural sort order. */ public fun CharArray.sortedArray(): CharArray { if (isEmpty()) return this return this.copyOf().apply { sort() } } /** * Returns an array with all elements of this array sorted descending according to their natural sort order. * * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting. */ public fun > Array.sortedArrayDescending(): Array { if (isEmpty()) return this return this.copyOf().apply { sortWith(reverseOrder()) } } /** * Returns an array with all elements of this array sorted descending according to their natural sort order. */ public fun ByteArray.sortedArrayDescending(): ByteArray { if (isEmpty()) return this return this.copyOf().apply { sortDescending() } } /** * Returns an array with all elements of this array sorted descending according to their natural sort order. */ public fun ShortArray.sortedArrayDescending(): ShortArray { if (isEmpty()) return this return this.copyOf().apply { sortDescending() } } /** * Returns an array with all elements of this array sorted descending according to their natural sort order. */ public fun IntArray.sortedArrayDescending(): IntArray { if (isEmpty()) return this return this.copyOf().apply { sortDescending() } } /** * Returns an array with all elements of this array sorted descending according to their natural sort order. */ public fun LongArray.sortedArrayDescending(): LongArray { if (isEmpty()) return this return this.copyOf().apply { sortDescending() } } /** * Returns an array with all elements of this array sorted descending according to their natural sort order. */ public fun FloatArray.sortedArrayDescending(): FloatArray { if (isEmpty()) return this return this.copyOf().apply { sortDescending() } } /** * Returns an array with all elements of this array sorted descending according to their natural sort order. */ public fun DoubleArray.sortedArrayDescending(): DoubleArray { if (isEmpty()) return this return this.copyOf().apply { sortDescending() } } /** * Returns an array with all elements of this array sorted descending according to their natural sort order. */ public fun CharArray.sortedArrayDescending(): CharArray { if (isEmpty()) return this return this.copyOf().apply { sortDescending() } } /** * Returns an array with all elements of this array sorted according the specified [comparator]. * * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting. */ public fun Array.sortedArrayWith(comparator: Comparator): Array { if (isEmpty()) return this return this.copyOf().apply { sortWith(comparator) } } /** * Returns a list of all elements sorted according to natural sort order of the value returned by specified [selector] function. * * The sort is _stable_. It means that elements for which [selector] returned equal values preserve their order * relative to each other after sorting. * * @sample samples.collections.Collections.Sorting.sortedBy */ public inline fun > Array.sortedBy(crossinline selector: (T) -> R?): List { return sortedWith(compareBy(selector)) } /** * Returns a list of all elements sorted according to natural sort order of the value returned by specified [selector] function. * * The sort is _stable_. It means that elements for which [selector] returned equal values preserve their order * relative to each other after sorting. * * @sample samples.collections.Collections.Sorting.sortedPrimitiveArrayBy */ public inline fun > ByteArray.sortedBy(crossinline selector: (Byte) -> R?): List { return sortedWith(compareBy(selector)) } /** * Returns a list of all elements sorted according to natural sort order of the value returned by specified [selector] function. * * The sort is _stable_. It means that elements for which [selector] returned equal values preserve their order * relative to each other after sorting. * * @sample samples.collections.Collections.Sorting.sortedPrimitiveArrayBy */ public inline fun > ShortArray.sortedBy(crossinline selector: (Short) -> R?): List { return sortedWith(compareBy(selector)) } /** * Returns a list of all elements sorted according to natural sort order of the value returned by specified [selector] function. * * The sort is _stable_. It means that elements for which [selector] returned equal values preserve their order * relative to each other after sorting. * * @sample samples.collections.Collections.Sorting.sortedPrimitiveArrayBy */ public inline fun > IntArray.sortedBy(crossinline selector: (Int) -> R?): List { return sortedWith(compareBy(selector)) } /** * Returns a list of all elements sorted according to natural sort order of the value returned by specified [selector] function. * * The sort is _stable_. It means that elements for which [selector] returned equal values preserve their order * relative to each other after sorting. * * @sample samples.collections.Collections.Sorting.sortedPrimitiveArrayBy */ public inline fun > LongArray.sortedBy(crossinline selector: (Long) -> R?): List { return sortedWith(compareBy(selector)) } /** * Returns a list of all elements sorted according to natural sort order of the value returned by specified [selector] function. * * The sort is _stable_. It means that elements for which [selector] returned equal values preserve their order * relative to each other after sorting. * * @sample samples.collections.Collections.Sorting.sortedPrimitiveArrayBy */ public inline fun > FloatArray.sortedBy(crossinline selector: (Float) -> R?): List { return sortedWith(compareBy(selector)) } /** * Returns a list of all elements sorted according to natural sort order of the value returned by specified [selector] function. * * The sort is _stable_. It means that elements for which [selector] returned equal values preserve their order * relative to each other after sorting. * * @sample samples.collections.Collections.Sorting.sortedPrimitiveArrayBy */ public inline fun > DoubleArray.sortedBy(crossinline selector: (Double) -> R?): List { return sortedWith(compareBy(selector)) } /** * Returns a list of all elements sorted according to natural sort order of the value returned by specified [selector] function. * * The sort is _stable_. It means that elements for which [selector] returned equal values preserve their order * relative to each other after sorting. * * @sample samples.collections.Collections.Sorting.sortedPrimitiveArrayBy */ public inline fun > BooleanArray.sortedBy(crossinline selector: (Boolean) -> R?): List { return sortedWith(compareBy(selector)) } /** * Returns a list of all elements sorted according to natural sort order of the value returned by specified [selector] function. * * The sort is _stable_. It means that elements for which [selector] returned equal values preserve their order * relative to each other after sorting. * * @sample samples.collections.Collections.Sorting.sortedPrimitiveArrayBy */ public inline fun > CharArray.sortedBy(crossinline selector: (Char) -> R?): List { return sortedWith(compareBy(selector)) } /** * Returns a list of all elements sorted descending according to natural sort order of the value returned by specified [selector] function. * * The sort is _stable_. It means that elements for which [selector] returned equal values preserve their order * relative to each other after sorting. * * @sample samples.collections.Collections.Sorting.sortedByDescending */ public inline fun > Array.sortedByDescending(crossinline selector: (T) -> R?): List { return sortedWith(compareByDescending(selector)) } /** * Returns a list of all elements sorted descending according to natural sort order of the value returned by specified [selector] function. * * The sort is _stable_. It means that elements for which [selector] returned equal values preserve their order * relative to each other after sorting. * * @sample samples.collections.Collections.Sorting.sortedPrimitiveArrayByDescending */ public inline fun > ByteArray.sortedByDescending(crossinline selector: (Byte) -> R?): List { return sortedWith(compareByDescending(selector)) } /** * Returns a list of all elements sorted descending according to natural sort order of the value returned by specified [selector] function. * * The sort is _stable_. It means that elements for which [selector] returned equal values preserve their order * relative to each other after sorting. * * @sample samples.collections.Collections.Sorting.sortedPrimitiveArrayByDescending */ public inline fun > ShortArray.sortedByDescending(crossinline selector: (Short) -> R?): List { return sortedWith(compareByDescending(selector)) } /** * Returns a list of all elements sorted descending according to natural sort order of the value returned by specified [selector] function. * * The sort is _stable_. It means that elements for which [selector] returned equal values preserve their order * relative to each other after sorting. * * @sample samples.collections.Collections.Sorting.sortedPrimitiveArrayByDescending */ public inline fun > IntArray.sortedByDescending(crossinline selector: (Int) -> R?): List { return sortedWith(compareByDescending(selector)) } /** * Returns a list of all elements sorted descending according to natural sort order of the value returned by specified [selector] function. * * The sort is _stable_. It means that elements for which [selector] returned equal values preserve their order * relative to each other after sorting. * * @sample samples.collections.Collections.Sorting.sortedPrimitiveArrayByDescending */ public inline fun > LongArray.sortedByDescending(crossinline selector: (Long) -> R?): List { return sortedWith(compareByDescending(selector)) } /** * Returns a list of all elements sorted descending according to natural sort order of the value returned by specified [selector] function. * * The sort is _stable_. It means that elements for which [selector] returned equal values preserve their order * relative to each other after sorting. * * @sample samples.collections.Collections.Sorting.sortedPrimitiveArrayByDescending */ public inline fun > FloatArray.sortedByDescending(crossinline selector: (Float) -> R?): List { return sortedWith(compareByDescending(selector)) } /** * Returns a list of all elements sorted descending according to natural sort order of the value returned by specified [selector] function. * * The sort is _stable_. It means that elements for which [selector] returned equal values preserve their order * relative to each other after sorting. * * @sample samples.collections.Collections.Sorting.sortedPrimitiveArrayByDescending */ public inline fun > DoubleArray.sortedByDescending(crossinline selector: (Double) -> R?): List { return sortedWith(compareByDescending(selector)) } /** * Returns a list of all elements sorted descending according to natural sort order of the value returned by specified [selector] function. * * The sort is _stable_. It means that elements for which [selector] returned equal values preserve their order * relative to each other after sorting. * * @sample samples.collections.Collections.Sorting.sortedPrimitiveArrayByDescending */ public inline fun > BooleanArray.sortedByDescending(crossinline selector: (Boolean) -> R?): List { return sortedWith(compareByDescending(selector)) } /** * Returns a list of all elements sorted descending according to natural sort order of the value returned by specified [selector] function. * * The sort is _stable_. It means that elements for which [selector] returned equal values preserve their order * relative to each other after sorting. * * @sample samples.collections.Collections.Sorting.sortedPrimitiveArrayByDescending */ public inline fun > CharArray.sortedByDescending(crossinline selector: (Char) -> R?): List { return sortedWith(compareByDescending(selector)) } /** * Returns a list of all elements sorted descending according to their natural sort order. * * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting. */ public fun > Array.sortedDescending(): List { return sortedWith(reverseOrder()) } /** * Returns a list of all elements sorted descending according to their natural sort order. */ public fun ByteArray.sortedDescending(): List { return copyOf().apply { sort() }.reversed() } /** * Returns a list of all elements sorted descending according to their natural sort order. */ public fun ShortArray.sortedDescending(): List { return copyOf().apply { sort() }.reversed() } /** * Returns a list of all elements sorted descending according to their natural sort order. */ public fun IntArray.sortedDescending(): List { return copyOf().apply { sort() }.reversed() } /** * Returns a list of all elements sorted descending according to their natural sort order. */ public fun LongArray.sortedDescending(): List { return copyOf().apply { sort() }.reversed() } /** * Returns a list of all elements sorted descending according to their natural sort order. */ public fun FloatArray.sortedDescending(): List { return copyOf().apply { sort() }.reversed() } /** * Returns a list of all elements sorted descending according to their natural sort order. */ public fun DoubleArray.sortedDescending(): List { return copyOf().apply { sort() }.reversed() } /** * Returns a list of all elements sorted descending according to their natural sort order. */ public fun CharArray.sortedDescending(): List { return copyOf().apply { sort() }.reversed() } /** * Returns a list of all elements sorted according to the specified [comparator]. * * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting. */ public fun Array.sortedWith(comparator: Comparator): List { return sortedArrayWith(comparator).asList() } /** * Returns a list of all elements sorted according to the specified [comparator]. */ public fun ByteArray.sortedWith(comparator: Comparator): List { return toTypedArray().apply { sortWith(comparator) }.asList() } /** * Returns a list of all elements sorted according to the specified [comparator]. */ public fun ShortArray.sortedWith(comparator: Comparator): List { return toTypedArray().apply { sortWith(comparator) }.asList() } /** * Returns a list of all elements sorted according to the specified [comparator]. */ public fun IntArray.sortedWith(comparator: Comparator): List { return toTypedArray().apply { sortWith(comparator) }.asList() } /** * Returns a list of all elements sorted according to the specified [comparator]. */ public fun LongArray.sortedWith(comparator: Comparator): List { return toTypedArray().apply { sortWith(comparator) }.asList() } /** * Returns a list of all elements sorted according to the specified [comparator]. */ public fun FloatArray.sortedWith(comparator: Comparator): List { return toTypedArray().apply { sortWith(comparator) }.asList() } /** * Returns a list of all elements sorted according to the specified [comparator]. */ public fun DoubleArray.sortedWith(comparator: Comparator): List { return toTypedArray().apply { sortWith(comparator) }.asList() } /** * Returns a list of all elements sorted according to the specified [comparator]. */ public fun BooleanArray.sortedWith(comparator: Comparator): List { return toTypedArray().apply { sortWith(comparator) }.asList() } /** * Returns a list of all elements sorted according to the specified [comparator]. */ public fun CharArray.sortedWith(comparator: Comparator): List { return toTypedArray().apply { sortWith(comparator) }.asList() } /** * Returns a [List] that wraps the original array. */ public expect fun Array.asList(): List /** * Returns a [List] that wraps the original array. */ public expect fun ByteArray.asList(): List /** * Returns a [List] that wraps the original array. */ public expect fun ShortArray.asList(): List /** * Returns a [List] that wraps the original array. */ public expect fun IntArray.asList(): List /** * Returns a [List] that wraps the original array. */ public expect fun LongArray.asList(): List /** * Returns a [List] that wraps the original array. */ public expect fun FloatArray.asList(): List /** * Returns a [List] that wraps the original array. */ public expect fun DoubleArray.asList(): List /** * Returns a [List] that wraps the original array. */ public expect fun BooleanArray.asList(): List /** * Returns a [List] that wraps the original array. */ public expect fun CharArray.asList(): List /** * Checks if the two specified arrays are *deeply* equal to one another. * * Two arrays are considered deeply equal if they have the same size, and elements at corresponding indices are deeply equal. * That is, if two corresponding elements are nested arrays, they are also compared deeply. * Elements of other types are compared for equality using the [equals][Any.equals] function. * For floating point numbers, this means `NaN` is equal to itself and `-0.0` is not equal to `0.0`. * * If any of the arrays contain themselves at any nesting level, the behavior is undefined. * * @param other the array to compare deeply with this array. * @return `true` if the two arrays are deeply equal, `false` otherwise. * * @sample samples.collections.Arrays.ContentOperations.contentDeepEquals */ @SinceKotlin("1.1") @kotlin.internal.LowPriorityInOverloadResolution public expect infix fun Array.contentDeepEquals(other: Array): Boolean /** * Checks if the two specified arrays are *deeply* equal to one another. * * Two arrays are considered deeply equal if they have the same size, and elements at corresponding indices are deeply equal. * That is, if two corresponding elements are nested arrays, they are also compared deeply. * Elements of other types are compared for equality using the [equals][Any.equals] function. * For floating point numbers, this means `NaN` is equal to itself and `-0.0` is not equal to `0.0`. * * The arrays are also considered deeply equal if both are `null`. * * If any of the arrays contain themselves at any nesting level, the behavior is undefined. * * @param other the array to compare deeply with this array. * @return `true` if the two arrays are deeply equal, `false` otherwise. * * @sample samples.collections.Arrays.ContentOperations.contentDeepEquals */ @SinceKotlin("1.4") public expect infix fun Array?.contentDeepEquals(other: Array?): Boolean /** * Returns a hash code based on the contents of this array as if it is [List]. * Nested arrays are treated as lists too. * * If any of arrays contains itself on any nesting level the behavior is undefined. */ @SinceKotlin("1.1") @kotlin.internal.LowPriorityInOverloadResolution public expect fun Array.contentDeepHashCode(): Int /** * Returns a hash code based on the contents of this array as if it is [List]. * Nested arrays are treated as lists too. * * If any of arrays contains itself on any nesting level the behavior is undefined. */ @SinceKotlin("1.4") public expect fun Array?.contentDeepHashCode(): Int /** * Returns a string representation of the contents of this array as if it is a [List]. * Nested arrays are treated as lists too. * * If any of arrays contains itself on any nesting level that reference * is rendered as `"[...]"` to prevent recursion. * * @sample samples.collections.Arrays.ContentOperations.contentDeepToString */ @SinceKotlin("1.1") @kotlin.internal.LowPriorityInOverloadResolution public expect fun Array.contentDeepToString(): String /** * Returns a string representation of the contents of this array as if it is a [List]. * Nested arrays are treated as lists too. * * If any of arrays contains itself on any nesting level that reference * is rendered as `"[...]"` to prevent recursion. * * @sample samples.collections.Arrays.ContentOperations.contentDeepToString */ @SinceKotlin("1.4") public expect fun Array?.contentDeepToString(): String /** * Checks if the two specified arrays are *structurally* equal to one another. * * Two arrays are considered structurally equal if they have the same size, and elements at corresponding indices are equal. * Elements are compared for equality using the [equals][Any.equals] function. * For floating point numbers, this means `NaN` is equal to itself and `-0.0` is not equal to `0.0`. * * The arrays are also considered structurally equal if both are `null`. * * If the arrays contain nested arrays, use [contentDeepEquals] to recursively compare their elements. * * @param other the array to compare with this array. * @return `true` if the two arrays are structurally equal, `false` otherwise. * * @sample samples.collections.Arrays.ContentOperations.arrayContentEquals */ @SinceKotlin("1.4") public expect infix fun Array?.contentEquals(other: Array?): Boolean /** * Checks if the two specified arrays are *structurally* equal to one another. * * Two arrays are considered structurally equal if they have the same size, and elements at corresponding indices are equal. * * The arrays are also considered structurally equal if both are `null`. * * @param other the array to compare with this array. * @return `true` if the two arrays are structurally equal, `false` otherwise. * * @sample samples.collections.Arrays.ContentOperations.intArrayContentEquals */ @SinceKotlin("1.4") public expect infix fun ByteArray?.contentEquals(other: ByteArray?): Boolean /** * Checks if the two specified arrays are *structurally* equal to one another. * * Two arrays are considered structurally equal if they have the same size, and elements at corresponding indices are equal. * * The arrays are also considered structurally equal if both are `null`. * * @param other the array to compare with this array. * @return `true` if the two arrays are structurally equal, `false` otherwise. * * @sample samples.collections.Arrays.ContentOperations.intArrayContentEquals */ @SinceKotlin("1.4") public expect infix fun ShortArray?.contentEquals(other: ShortArray?): Boolean /** * Checks if the two specified arrays are *structurally* equal to one another. * * Two arrays are considered structurally equal if they have the same size, and elements at corresponding indices are equal. * * The arrays are also considered structurally equal if both are `null`. * * @param other the array to compare with this array. * @return `true` if the two arrays are structurally equal, `false` otherwise. * * @sample samples.collections.Arrays.ContentOperations.intArrayContentEquals */ @SinceKotlin("1.4") public expect infix fun IntArray?.contentEquals(other: IntArray?): Boolean /** * Checks if the two specified arrays are *structurally* equal to one another. * * Two arrays are considered structurally equal if they have the same size, and elements at corresponding indices are equal. * * The arrays are also considered structurally equal if both are `null`. * * @param other the array to compare with this array. * @return `true` if the two arrays are structurally equal, `false` otherwise. * * @sample samples.collections.Arrays.ContentOperations.intArrayContentEquals */ @SinceKotlin("1.4") public expect infix fun LongArray?.contentEquals(other: LongArray?): Boolean /** * Checks if the two specified arrays are *structurally* equal to one another. * * Two arrays are considered structurally equal if they have the same size, and elements at corresponding indices are equal. * Elements are compared for equality using the [equals][Any.equals] function. * This means `NaN` is equal to itself and `-0.0` is not equal to `0.0`. * * The arrays are also considered structurally equal if both are `null`. * * @param other the array to compare with this array. * @return `true` if the two arrays are structurally equal, `false` otherwise. * * @sample samples.collections.Arrays.ContentOperations.doubleArrayContentEquals */ @SinceKotlin("1.4") public expect infix fun FloatArray?.contentEquals(other: FloatArray?): Boolean /** * Checks if the two specified arrays are *structurally* equal to one another. * * Two arrays are considered structurally equal if they have the same size, and elements at corresponding indices are equal. * Elements are compared for equality using the [equals][Any.equals] function. * This means `NaN` is equal to itself and `-0.0` is not equal to `0.0`. * * The arrays are also considered structurally equal if both are `null`. * * @param other the array to compare with this array. * @return `true` if the two arrays are structurally equal, `false` otherwise. * * @sample samples.collections.Arrays.ContentOperations.doubleArrayContentEquals */ @SinceKotlin("1.4") public expect infix fun DoubleArray?.contentEquals(other: DoubleArray?): Boolean /** * Checks if the two specified arrays are *structurally* equal to one another. * * Two arrays are considered structurally equal if they have the same size, and elements at corresponding indices are equal. * * The arrays are also considered structurally equal if both are `null`. * * @param other the array to compare with this array. * @return `true` if the two arrays are structurally equal, `false` otherwise. * * @sample samples.collections.Arrays.ContentOperations.booleanArrayContentEquals */ @SinceKotlin("1.4") public expect infix fun BooleanArray?.contentEquals(other: BooleanArray?): Boolean /** * Checks if the two specified arrays are *structurally* equal to one another. * * Two arrays are considered structurally equal if they have the same size, and elements at corresponding indices are equal. * * The arrays are also considered structurally equal if both are `null`. * * @param other the array to compare with this array. * @return `true` if the two arrays are structurally equal, `false` otherwise. * * @sample samples.collections.Arrays.ContentOperations.charArrayContentEquals */ @SinceKotlin("1.4") public expect infix fun CharArray?.contentEquals(other: CharArray?): Boolean /** * Returns a hash code based on the contents of this array as if it is [List]. */ @SinceKotlin("1.4") public expect fun Array?.contentHashCode(): Int /** * Returns a hash code based on the contents of this array as if it is [List]. */ @SinceKotlin("1.4") public expect fun ByteArray?.contentHashCode(): Int /** * Returns a hash code based on the contents of this array as if it is [List]. */ @SinceKotlin("1.4") public expect fun ShortArray?.contentHashCode(): Int /** * Returns a hash code based on the contents of this array as if it is [List]. */ @SinceKotlin("1.4") public expect fun IntArray?.contentHashCode(): Int /** * Returns a hash code based on the contents of this array as if it is [List]. */ @SinceKotlin("1.4") public expect fun LongArray?.contentHashCode(): Int /** * Returns a hash code based on the contents of this array as if it is [List]. */ @SinceKotlin("1.4") public expect fun FloatArray?.contentHashCode(): Int /** * Returns a hash code based on the contents of this array as if it is [List]. */ @SinceKotlin("1.4") public expect fun DoubleArray?.contentHashCode(): Int /** * Returns a hash code based on the contents of this array as if it is [List]. */ @SinceKotlin("1.4") public expect fun BooleanArray?.contentHashCode(): Int /** * Returns a hash code based on the contents of this array as if it is [List]. */ @SinceKotlin("1.4") public expect fun CharArray?.contentHashCode(): Int /** * Returns a string representation of the contents of the specified array as if it is [List]. * * @sample samples.collections.Arrays.ContentOperations.contentToString */ @SinceKotlin("1.4") public expect fun Array?.contentToString(): String /** * Returns a string representation of the contents of the specified array as if it is [List]. * * @sample samples.collections.Arrays.ContentOperations.contentToString */ @SinceKotlin("1.4") public expect fun ByteArray?.contentToString(): String /** * Returns a string representation of the contents of the specified array as if it is [List]. * * @sample samples.collections.Arrays.ContentOperations.contentToString */ @SinceKotlin("1.4") public expect fun ShortArray?.contentToString(): String /** * Returns a string representation of the contents of the specified array as if it is [List]. * * @sample samples.collections.Arrays.ContentOperations.contentToString */ @SinceKotlin("1.4") public expect fun IntArray?.contentToString(): String /** * Returns a string representation of the contents of the specified array as if it is [List]. * * @sample samples.collections.Arrays.ContentOperations.contentToString */ @SinceKotlin("1.4") public expect fun LongArray?.contentToString(): String /** * Returns a string representation of the contents of the specified array as if it is [List]. * * @sample samples.collections.Arrays.ContentOperations.contentToString */ @SinceKotlin("1.4") public expect fun FloatArray?.contentToString(): String /** * Returns a string representation of the contents of the specified array as if it is [List]. * * @sample samples.collections.Arrays.ContentOperations.contentToString */ @SinceKotlin("1.4") public expect fun DoubleArray?.contentToString(): String /** * Returns a string representation of the contents of the specified array as if it is [List]. * * @sample samples.collections.Arrays.ContentOperations.contentToString */ @SinceKotlin("1.4") public expect fun BooleanArray?.contentToString(): String /** * Returns a string representation of the contents of the specified array as if it is [List]. * * @sample samples.collections.Arrays.ContentOperations.contentToString */ @SinceKotlin("1.4") public expect fun CharArray?.contentToString(): String /** * Copies this array or its subrange into the [destination] array and returns that array. * * It's allowed to pass the same array in the [destination] and even specify the subrange so that it overlaps with the destination range. * * @param destination the array to copy to. * @param destinationOffset the position in the [destination] array to copy to, 0 by default. * @param startIndex the beginning (inclusive) of the subrange to copy, 0 by default. * @param endIndex the end (exclusive) of the subrange to copy, size of this array by default. * * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] or [endIndex] is out of range of this array indices or when `startIndex > endIndex`. * @throws IndexOutOfBoundsException when the subrange doesn't fit into the [destination] array starting at the specified [destinationOffset], * or when that index is out of the [destination] array indices range. * * @return the [destination] array. */ @SinceKotlin("1.3") public expect fun Array.copyInto(destination: Array, destinationOffset: Int = 0, startIndex: Int = 0, endIndex: Int = size): Array /** * Copies this array or its subrange into the [destination] array and returns that array. * * It's allowed to pass the same array in the [destination] and even specify the subrange so that it overlaps with the destination range. * * @param destination the array to copy to. * @param destinationOffset the position in the [destination] array to copy to, 0 by default. * @param startIndex the beginning (inclusive) of the subrange to copy, 0 by default. * @param endIndex the end (exclusive) of the subrange to copy, size of this array by default. * * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] or [endIndex] is out of range of this array indices or when `startIndex > endIndex`. * @throws IndexOutOfBoundsException when the subrange doesn't fit into the [destination] array starting at the specified [destinationOffset], * or when that index is out of the [destination] array indices range. * * @return the [destination] array. */ @SinceKotlin("1.3") public expect fun ByteArray.copyInto(destination: ByteArray, destinationOffset: Int = 0, startIndex: Int = 0, endIndex: Int = size): ByteArray /** * Copies this array or its subrange into the [destination] array and returns that array. * * It's allowed to pass the same array in the [destination] and even specify the subrange so that it overlaps with the destination range. * * @param destination the array to copy to. * @param destinationOffset the position in the [destination] array to copy to, 0 by default. * @param startIndex the beginning (inclusive) of the subrange to copy, 0 by default. * @param endIndex the end (exclusive) of the subrange to copy, size of this array by default. * * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] or [endIndex] is out of range of this array indices or when `startIndex > endIndex`. * @throws IndexOutOfBoundsException when the subrange doesn't fit into the [destination] array starting at the specified [destinationOffset], * or when that index is out of the [destination] array indices range. * * @return the [destination] array. */ @SinceKotlin("1.3") public expect fun ShortArray.copyInto(destination: ShortArray, destinationOffset: Int = 0, startIndex: Int = 0, endIndex: Int = size): ShortArray /** * Copies this array or its subrange into the [destination] array and returns that array. * * It's allowed to pass the same array in the [destination] and even specify the subrange so that it overlaps with the destination range. * * @param destination the array to copy to. * @param destinationOffset the position in the [destination] array to copy to, 0 by default. * @param startIndex the beginning (inclusive) of the subrange to copy, 0 by default. * @param endIndex the end (exclusive) of the subrange to copy, size of this array by default. * * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] or [endIndex] is out of range of this array indices or when `startIndex > endIndex`. * @throws IndexOutOfBoundsException when the subrange doesn't fit into the [destination] array starting at the specified [destinationOffset], * or when that index is out of the [destination] array indices range. * * @return the [destination] array. */ @SinceKotlin("1.3") public expect fun IntArray.copyInto(destination: IntArray, destinationOffset: Int = 0, startIndex: Int = 0, endIndex: Int = size): IntArray /** * Copies this array or its subrange into the [destination] array and returns that array. * * It's allowed to pass the same array in the [destination] and even specify the subrange so that it overlaps with the destination range. * * @param destination the array to copy to. * @param destinationOffset the position in the [destination] array to copy to, 0 by default. * @param startIndex the beginning (inclusive) of the subrange to copy, 0 by default. * @param endIndex the end (exclusive) of the subrange to copy, size of this array by default. * * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] or [endIndex] is out of range of this array indices or when `startIndex > endIndex`. * @throws IndexOutOfBoundsException when the subrange doesn't fit into the [destination] array starting at the specified [destinationOffset], * or when that index is out of the [destination] array indices range. * * @return the [destination] array. */ @SinceKotlin("1.3") public expect fun LongArray.copyInto(destination: LongArray, destinationOffset: Int = 0, startIndex: Int = 0, endIndex: Int = size): LongArray /** * Copies this array or its subrange into the [destination] array and returns that array. * * It's allowed to pass the same array in the [destination] and even specify the subrange so that it overlaps with the destination range. * * @param destination the array to copy to. * @param destinationOffset the position in the [destination] array to copy to, 0 by default. * @param startIndex the beginning (inclusive) of the subrange to copy, 0 by default. * @param endIndex the end (exclusive) of the subrange to copy, size of this array by default. * * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] or [endIndex] is out of range of this array indices or when `startIndex > endIndex`. * @throws IndexOutOfBoundsException when the subrange doesn't fit into the [destination] array starting at the specified [destinationOffset], * or when that index is out of the [destination] array indices range. * * @return the [destination] array. */ @SinceKotlin("1.3") public expect fun FloatArray.copyInto(destination: FloatArray, destinationOffset: Int = 0, startIndex: Int = 0, endIndex: Int = size): FloatArray /** * Copies this array or its subrange into the [destination] array and returns that array. * * It's allowed to pass the same array in the [destination] and even specify the subrange so that it overlaps with the destination range. * * @param destination the array to copy to. * @param destinationOffset the position in the [destination] array to copy to, 0 by default. * @param startIndex the beginning (inclusive) of the subrange to copy, 0 by default. * @param endIndex the end (exclusive) of the subrange to copy, size of this array by default. * * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] or [endIndex] is out of range of this array indices or when `startIndex > endIndex`. * @throws IndexOutOfBoundsException when the subrange doesn't fit into the [destination] array starting at the specified [destinationOffset], * or when that index is out of the [destination] array indices range. * * @return the [destination] array. */ @SinceKotlin("1.3") public expect fun DoubleArray.copyInto(destination: DoubleArray, destinationOffset: Int = 0, startIndex: Int = 0, endIndex: Int = size): DoubleArray /** * Copies this array or its subrange into the [destination] array and returns that array. * * It's allowed to pass the same array in the [destination] and even specify the subrange so that it overlaps with the destination range. * * @param destination the array to copy to. * @param destinationOffset the position in the [destination] array to copy to, 0 by default. * @param startIndex the beginning (inclusive) of the subrange to copy, 0 by default. * @param endIndex the end (exclusive) of the subrange to copy, size of this array by default. * * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] or [endIndex] is out of range of this array indices or when `startIndex > endIndex`. * @throws IndexOutOfBoundsException when the subrange doesn't fit into the [destination] array starting at the specified [destinationOffset], * or when that index is out of the [destination] array indices range. * * @return the [destination] array. */ @SinceKotlin("1.3") public expect fun BooleanArray.copyInto(destination: BooleanArray, destinationOffset: Int = 0, startIndex: Int = 0, endIndex: Int = size): BooleanArray /** * Copies this array or its subrange into the [destination] array and returns that array. * * It's allowed to pass the same array in the [destination] and even specify the subrange so that it overlaps with the destination range. * * @param destination the array to copy to. * @param destinationOffset the position in the [destination] array to copy to, 0 by default. * @param startIndex the beginning (inclusive) of the subrange to copy, 0 by default. * @param endIndex the end (exclusive) of the subrange to copy, size of this array by default. * * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] or [endIndex] is out of range of this array indices or when `startIndex > endIndex`. * @throws IndexOutOfBoundsException when the subrange doesn't fit into the [destination] array starting at the specified [destinationOffset], * or when that index is out of the [destination] array indices range. * * @return the [destination] array. */ @SinceKotlin("1.3") public expect fun CharArray.copyInto(destination: CharArray, destinationOffset: Int = 0, startIndex: Int = 0, endIndex: Int = size): CharArray /** * Returns new array which is a copy of the original array. * * @sample samples.collections.Arrays.CopyOfOperations.copyOf */ public expect fun Array.copyOf(): Array /** * Returns new array which is a copy of the original array. * * @sample samples.collections.Arrays.CopyOfOperations.copyOf */ public expect fun ByteArray.copyOf(): ByteArray /** * Returns new array which is a copy of the original array. * * @sample samples.collections.Arrays.CopyOfOperations.copyOf */ public expect fun ShortArray.copyOf(): ShortArray /** * Returns new array which is a copy of the original array. * * @sample samples.collections.Arrays.CopyOfOperations.copyOf */ public expect fun IntArray.copyOf(): IntArray /** * Returns new array which is a copy of the original array. * * @sample samples.collections.Arrays.CopyOfOperations.copyOf */ public expect fun LongArray.copyOf(): LongArray /** * Returns new array which is a copy of the original array. * * @sample samples.collections.Arrays.CopyOfOperations.copyOf */ public expect fun FloatArray.copyOf(): FloatArray /** * Returns new array which is a copy of the original array. * * @sample samples.collections.Arrays.CopyOfOperations.copyOf */ public expect fun DoubleArray.copyOf(): DoubleArray /** * Returns new array which is a copy of the original array. * * @sample samples.collections.Arrays.CopyOfOperations.copyOf */ public expect fun BooleanArray.copyOf(): BooleanArray /** * Returns new array which is a copy of the original array. * * @sample samples.collections.Arrays.CopyOfOperations.copyOf */ public expect fun CharArray.copyOf(): CharArray /** * Returns new array which is a copy of the original array, resized to the given [newSize]. * The copy is either truncated or padded at the end with zero values if necessary. * * - If [newSize] is less than the size of the original array, the copy array is truncated to the [newSize]. * - If [newSize] is greater than the size of the original array, the extra elements in the copy array are filled with zero values. * * @sample samples.collections.Arrays.CopyOfOperations.resizedPrimitiveCopyOf */ public expect fun ByteArray.copyOf(newSize: Int): ByteArray /** * Returns new array which is a copy of the original array, resized to the given [newSize]. * The copy is either truncated or padded at the end with zero values if necessary. * * - If [newSize] is less than the size of the original array, the copy array is truncated to the [newSize]. * - If [newSize] is greater than the size of the original array, the extra elements in the copy array are filled with zero values. * * @sample samples.collections.Arrays.CopyOfOperations.resizedPrimitiveCopyOf */ public expect fun ShortArray.copyOf(newSize: Int): ShortArray /** * Returns new array which is a copy of the original array, resized to the given [newSize]. * The copy is either truncated or padded at the end with zero values if necessary. * * - If [newSize] is less than the size of the original array, the copy array is truncated to the [newSize]. * - If [newSize] is greater than the size of the original array, the extra elements in the copy array are filled with zero values. * * @sample samples.collections.Arrays.CopyOfOperations.resizedPrimitiveCopyOf */ public expect fun IntArray.copyOf(newSize: Int): IntArray /** * Returns new array which is a copy of the original array, resized to the given [newSize]. * The copy is either truncated or padded at the end with zero values if necessary. * * - If [newSize] is less than the size of the original array, the copy array is truncated to the [newSize]. * - If [newSize] is greater than the size of the original array, the extra elements in the copy array are filled with zero values. * * @sample samples.collections.Arrays.CopyOfOperations.resizedPrimitiveCopyOf */ public expect fun LongArray.copyOf(newSize: Int): LongArray /** * Returns new array which is a copy of the original array, resized to the given [newSize]. * The copy is either truncated or padded at the end with zero values if necessary. * * - If [newSize] is less than the size of the original array, the copy array is truncated to the [newSize]. * - If [newSize] is greater than the size of the original array, the extra elements in the copy array are filled with zero values. * * @sample samples.collections.Arrays.CopyOfOperations.resizedPrimitiveCopyOf */ public expect fun FloatArray.copyOf(newSize: Int): FloatArray /** * Returns new array which is a copy of the original array, resized to the given [newSize]. * The copy is either truncated or padded at the end with zero values if necessary. * * - If [newSize] is less than the size of the original array, the copy array is truncated to the [newSize]. * - If [newSize] is greater than the size of the original array, the extra elements in the copy array are filled with zero values. * * @sample samples.collections.Arrays.CopyOfOperations.resizedPrimitiveCopyOf */ public expect fun DoubleArray.copyOf(newSize: Int): DoubleArray /** * Returns new array which is a copy of the original array, resized to the given [newSize]. * The copy is either truncated or padded at the end with `false` values if necessary. * * - If [newSize] is less than the size of the original array, the copy array is truncated to the [newSize]. * - If [newSize] is greater than the size of the original array, the extra elements in the copy array are filled with `false` values. * * @sample samples.collections.Arrays.CopyOfOperations.resizedPrimitiveCopyOf */ public expect fun BooleanArray.copyOf(newSize: Int): BooleanArray /** * Returns new array which is a copy of the original array, resized to the given [newSize]. * The copy is either truncated or padded at the end with null char (`\u0000`) values if necessary. * * - If [newSize] is less than the size of the original array, the copy array is truncated to the [newSize]. * - If [newSize] is greater than the size of the original array, the extra elements in the copy array are filled with null char (`\u0000`) values. * * @sample samples.collections.Arrays.CopyOfOperations.resizedPrimitiveCopyOf */ public expect fun CharArray.copyOf(newSize: Int): CharArray /** * Returns new array which is a copy of the original array, resized to the given [newSize]. * The copy is either truncated or padded at the end with `null` values if necessary. * * - If [newSize] is less than the size of the original array, the copy array is truncated to the [newSize]. * - If [newSize] is greater than the size of the original array, the extra elements in the copy array are filled with `null` values. * * @sample samples.collections.Arrays.CopyOfOperations.resizingCopyOf */ public expect fun Array.copyOf(newSize: Int): Array /** * Returns new array which is a copy of the original array, resized to the given [newSize]. * The copy is either truncated or padded at the end with values calculated by calling the specified [init] function. * * - If [newSize] is less than the size of the original array, the copy array is truncated to the [newSize]. * - If [newSize] is greater than the size of the original array, * the extra elements in the copy array are filled with values calculated by calling the specified [init] function. * * The function [init] is called sequentially for each array element in range starting from the index corresponding to the source * array size until [newSize]. * It should return the value for an array element given its index. * * @sample samples.collections.Arrays.CopyOfOperations.copyOfArrayWithInitializer */ @SinceKotlin("2.2") @ExperimentalStdlibApi @kotlin.internal.InlineOnly public inline fun Array.copyOf(newSize: Int, init: (Int) -> T): Array { require(newSize >= 0) { "Invalid new array size: $newSize." } val oldSize = size val copy = copyOf(newSize) for (idx in oldSize until newSize) { copy[idx] = init(idx) } @Suppress("UNCHECKED_CAST") return copy as Array } /** * Returns new array which is a copy of the original array, resized to the given [newSize]. * The copy is either truncated or padded at the end with values calculated by calling the specified [init] function. * * - If [newSize] is less than the size of the original array, the copy array is truncated to the [newSize]. * - If [newSize] is greater than the size of the original array, * the extra elements in the copy array are filled with values calculated by calling the specified [init] function. * * The function [init] is called sequentially for each array element in range starting from the index corresponding to the source * array size until [newSize]. * It should return the value for an array element given its index. * * @sample samples.collections.Arrays.CopyOfOperations.copyOfByteArrayWithInitializer */ @SinceKotlin("2.2") @ExperimentalStdlibApi @kotlin.internal.InlineOnly public inline fun ByteArray.copyOf(newSize: Int, init: (Int) -> Byte): ByteArray { require(newSize >= 0) { "Invalid new array size: $newSize." } val oldSize = size val copy = copyOf(newSize) for (idx in oldSize until newSize) { copy[idx] = init(idx) } return copy } /** * Returns new array which is a copy of the original array, resized to the given [newSize]. * The copy is either truncated or padded at the end with values calculated by calling the specified [init] function. * * - If [newSize] is less than the size of the original array, the copy array is truncated to the [newSize]. * - If [newSize] is greater than the size of the original array, * the extra elements in the copy array are filled with values calculated by calling the specified [init] function. * * The function [init] is called sequentially for each array element in range starting from the index corresponding to the source * array size until [newSize]. * It should return the value for an array element given its index. * * @sample samples.collections.Arrays.CopyOfOperations.copyOfShortArrayWithInitializer */ @SinceKotlin("2.2") @ExperimentalStdlibApi @kotlin.internal.InlineOnly public inline fun ShortArray.copyOf(newSize: Int, init: (Int) -> Short): ShortArray { require(newSize >= 0) { "Invalid new array size: $newSize." } val oldSize = size val copy = copyOf(newSize) for (idx in oldSize until newSize) { copy[idx] = init(idx) } return copy } /** * Returns new array which is a copy of the original array, resized to the given [newSize]. * The copy is either truncated or padded at the end with values calculated by calling the specified [init] function. * * - If [newSize] is less than the size of the original array, the copy array is truncated to the [newSize]. * - If [newSize] is greater than the size of the original array, * the extra elements in the copy array are filled with values calculated by calling the specified [init] function. * * The function [init] is called sequentially for each array element in range starting from the index corresponding to the source * array size until [newSize]. * It should return the value for an array element given its index. * * @sample samples.collections.Arrays.CopyOfOperations.copyOfIntArrayWithInitializer */ @SinceKotlin("2.2") @ExperimentalStdlibApi @kotlin.internal.InlineOnly public inline fun IntArray.copyOf(newSize: Int, init: (Int) -> Int): IntArray { require(newSize >= 0) { "Invalid new array size: $newSize." } val oldSize = size val copy = copyOf(newSize) for (idx in oldSize until newSize) { copy[idx] = init(idx) } return copy } /** * Returns new array which is a copy of the original array, resized to the given [newSize]. * The copy is either truncated or padded at the end with values calculated by calling the specified [init] function. * * - If [newSize] is less than the size of the original array, the copy array is truncated to the [newSize]. * - If [newSize] is greater than the size of the original array, * the extra elements in the copy array are filled with values calculated by calling the specified [init] function. * * The function [init] is called sequentially for each array element in range starting from the index corresponding to the source * array size until [newSize]. * It should return the value for an array element given its index. * * @sample samples.collections.Arrays.CopyOfOperations.copyOfLongArrayWithInitializer */ @SinceKotlin("2.2") @ExperimentalStdlibApi @kotlin.internal.InlineOnly public inline fun LongArray.copyOf(newSize: Int, init: (Int) -> Long): LongArray { require(newSize >= 0) { "Invalid new array size: $newSize." } val oldSize = size val copy = copyOf(newSize) for (idx in oldSize until newSize) { copy[idx] = init(idx) } return copy } /** * Returns new array which is a copy of the original array, resized to the given [newSize]. * The copy is either truncated or padded at the end with values calculated by calling the specified [init] function. * * - If [newSize] is less than the size of the original array, the copy array is truncated to the [newSize]. * - If [newSize] is greater than the size of the original array, * the extra elements in the copy array are filled with values calculated by calling the specified [init] function. * * The function [init] is called sequentially for each array element in range starting from the index corresponding to the source * array size until [newSize]. * It should return the value for an array element given its index. * * @sample samples.collections.Arrays.CopyOfOperations.copyOfFloatArrayWithInitializer */ @SinceKotlin("2.2") @ExperimentalStdlibApi @kotlin.internal.InlineOnly public inline fun FloatArray.copyOf(newSize: Int, init: (Int) -> Float): FloatArray { require(newSize >= 0) { "Invalid new array size: $newSize." } val oldSize = size val copy = copyOf(newSize) for (idx in oldSize until newSize) { copy[idx] = init(idx) } return copy } /** * Returns new array which is a copy of the original array, resized to the given [newSize]. * The copy is either truncated or padded at the end with values calculated by calling the specified [init] function. * * - If [newSize] is less than the size of the original array, the copy array is truncated to the [newSize]. * - If [newSize] is greater than the size of the original array, * the extra elements in the copy array are filled with values calculated by calling the specified [init] function. * * The function [init] is called sequentially for each array element in range starting from the index corresponding to the source * array size until [newSize]. * It should return the value for an array element given its index. * * @sample samples.collections.Arrays.CopyOfOperations.copyOfDoubleArrayWithInitializer */ @SinceKotlin("2.2") @ExperimentalStdlibApi @kotlin.internal.InlineOnly public inline fun DoubleArray.copyOf(newSize: Int, init: (Int) -> Double): DoubleArray { require(newSize >= 0) { "Invalid new array size: $newSize." } val oldSize = size val copy = copyOf(newSize) for (idx in oldSize until newSize) { copy[idx] = init(idx) } return copy } /** * Returns new array which is a copy of the original array, resized to the given [newSize]. * The copy is either truncated or padded at the end with values calculated by calling the specified [init] function. * * - If [newSize] is less than the size of the original array, the copy array is truncated to the [newSize]. * - If [newSize] is greater than the size of the original array, * the extra elements in the copy array are filled with values calculated by calling the specified [init] function. * * The function [init] is called sequentially for each array element in range starting from the index corresponding to the source * array size until [newSize]. * It should return the value for an array element given its index. * * @sample samples.collections.Arrays.CopyOfOperations.copyOfBooleanArrayWithInitializer */ @SinceKotlin("2.2") @ExperimentalStdlibApi @kotlin.internal.InlineOnly public inline fun BooleanArray.copyOf(newSize: Int, init: (Int) -> Boolean): BooleanArray { require(newSize >= 0) { "Invalid new array size: $newSize." } val oldSize = size val copy = copyOf(newSize) for (idx in oldSize until newSize) { copy[idx] = init(idx) } return copy } /** * Returns new array which is a copy of the original array, resized to the given [newSize]. * The copy is either truncated or padded at the end with values calculated by calling the specified [init] function. * * - If [newSize] is less than the size of the original array, the copy array is truncated to the [newSize]. * - If [newSize] is greater than the size of the original array, * the extra elements in the copy array are filled with values calculated by calling the specified [init] function. * * The function [init] is called sequentially for each array element in range starting from the index corresponding to the source * array size until [newSize]. * It should return the value for an array element given its index. * * @sample samples.collections.Arrays.CopyOfOperations.copyOfCharArrayWithInitializer */ @SinceKotlin("2.2") @ExperimentalStdlibApi @kotlin.internal.InlineOnly public inline fun CharArray.copyOf(newSize: Int, init: (Int) -> Char): CharArray { require(newSize >= 0) { "Invalid new array size: $newSize." } val oldSize = size val copy = copyOf(newSize) for (idx in oldSize until newSize) { copy[idx] = init(idx) } return copy } /** * Returns a new array which is a copy of the specified range of the original array. * * @param fromIndex the start of the range (inclusive) to copy. * @param toIndex the end of the range (exclusive) to copy. * * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array. * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex]. */ public expect fun Array.copyOfRange(fromIndex: Int, toIndex: Int): Array /** * Returns a new array which is a copy of the specified range of the original array. * * @param fromIndex the start of the range (inclusive) to copy. * @param toIndex the end of the range (exclusive) to copy. * * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array. * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex]. */ public expect fun ByteArray.copyOfRange(fromIndex: Int, toIndex: Int): ByteArray /** * Returns a new array which is a copy of the specified range of the original array. * * @param fromIndex the start of the range (inclusive) to copy. * @param toIndex the end of the range (exclusive) to copy. * * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array. * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex]. */ public expect fun ShortArray.copyOfRange(fromIndex: Int, toIndex: Int): ShortArray /** * Returns a new array which is a copy of the specified range of the original array. * * @param fromIndex the start of the range (inclusive) to copy. * @param toIndex the end of the range (exclusive) to copy. * * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array. * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex]. */ public expect fun IntArray.copyOfRange(fromIndex: Int, toIndex: Int): IntArray /** * Returns a new array which is a copy of the specified range of the original array. * * @param fromIndex the start of the range (inclusive) to copy. * @param toIndex the end of the range (exclusive) to copy. * * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array. * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex]. */ public expect fun LongArray.copyOfRange(fromIndex: Int, toIndex: Int): LongArray /** * Returns a new array which is a copy of the specified range of the original array. * * @param fromIndex the start of the range (inclusive) to copy. * @param toIndex the end of the range (exclusive) to copy. * * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array. * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex]. */ public expect fun FloatArray.copyOfRange(fromIndex: Int, toIndex: Int): FloatArray /** * Returns a new array which is a copy of the specified range of the original array. * * @param fromIndex the start of the range (inclusive) to copy. * @param toIndex the end of the range (exclusive) to copy. * * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array. * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex]. */ public expect fun DoubleArray.copyOfRange(fromIndex: Int, toIndex: Int): DoubleArray /** * Returns a new array which is a copy of the specified range of the original array. * * @param fromIndex the start of the range (inclusive) to copy. * @param toIndex the end of the range (exclusive) to copy. * * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array. * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex]. */ public expect fun BooleanArray.copyOfRange(fromIndex: Int, toIndex: Int): BooleanArray /** * Returns a new array which is a copy of the specified range of the original array. * * @param fromIndex the start of the range (inclusive) to copy. * @param toIndex the end of the range (exclusive) to copy. * * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array. * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex]. */ public expect fun CharArray.copyOfRange(fromIndex: Int, toIndex: Int): CharArray /** * Fills this array or its subrange with the specified [element] value. * * @param fromIndex the start of the range (inclusive) to fill, 0 by default. * @param toIndex the end of the range (exclusive) to fill, size of this array by default. * * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array. * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex]. */ @SinceKotlin("1.3") public expect fun Array.fill(element: T, fromIndex: Int = 0, toIndex: Int = size): Unit /** * Fills this array or its subrange with the specified [element] value. * * @param fromIndex the start of the range (inclusive) to fill, 0 by default. * @param toIndex the end of the range (exclusive) to fill, size of this array by default. * * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array. * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex]. */ @SinceKotlin("1.3") public expect fun ByteArray.fill(element: Byte, fromIndex: Int = 0, toIndex: Int = size): Unit /** * Fills this array or its subrange with the specified [element] value. * * @param fromIndex the start of the range (inclusive) to fill, 0 by default. * @param toIndex the end of the range (exclusive) to fill, size of this array by default. * * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array. * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex]. */ @SinceKotlin("1.3") public expect fun ShortArray.fill(element: Short, fromIndex: Int = 0, toIndex: Int = size): Unit /** * Fills this array or its subrange with the specified [element] value. * * @param fromIndex the start of the range (inclusive) to fill, 0 by default. * @param toIndex the end of the range (exclusive) to fill, size of this array by default. * * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array. * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex]. */ @SinceKotlin("1.3") public expect fun IntArray.fill(element: Int, fromIndex: Int = 0, toIndex: Int = size): Unit /** * Fills this array or its subrange with the specified [element] value. * * @param fromIndex the start of the range (inclusive) to fill, 0 by default. * @param toIndex the end of the range (exclusive) to fill, size of this array by default. * * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array. * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex]. */ @SinceKotlin("1.3") public expect fun LongArray.fill(element: Long, fromIndex: Int = 0, toIndex: Int = size): Unit /** * Fills this array or its subrange with the specified [element] value. * * @param fromIndex the start of the range (inclusive) to fill, 0 by default. * @param toIndex the end of the range (exclusive) to fill, size of this array by default. * * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array. * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex]. */ @SinceKotlin("1.3") public expect fun FloatArray.fill(element: Float, fromIndex: Int = 0, toIndex: Int = size): Unit /** * Fills this array or its subrange with the specified [element] value. * * @param fromIndex the start of the range (inclusive) to fill, 0 by default. * @param toIndex the end of the range (exclusive) to fill, size of this array by default. * * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array. * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex]. */ @SinceKotlin("1.3") public expect fun DoubleArray.fill(element: Double, fromIndex: Int = 0, toIndex: Int = size): Unit /** * Fills this array or its subrange with the specified [element] value. * * @param fromIndex the start of the range (inclusive) to fill, 0 by default. * @param toIndex the end of the range (exclusive) to fill, size of this array by default. * * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array. * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex]. */ @SinceKotlin("1.3") public expect fun BooleanArray.fill(element: Boolean, fromIndex: Int = 0, toIndex: Int = size): Unit /** * Fills this array or its subrange with the specified [element] value. * * @param fromIndex the start of the range (inclusive) to fill, 0 by default. * @param toIndex the end of the range (exclusive) to fill, size of this array by default. * * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array. * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex]. */ @SinceKotlin("1.3") public expect fun CharArray.fill(element: Char, fromIndex: Int = 0, toIndex: Int = size): Unit /** * Returns the range of valid indices for the array. */ public val Array.indices: IntRange get() = IntRange(0, lastIndex) /** * Returns the range of valid indices for the array. */ public val ByteArray.indices: IntRange get() = IntRange(0, lastIndex) /** * Returns the range of valid indices for the array. */ public val ShortArray.indices: IntRange get() = IntRange(0, lastIndex) /** * Returns the range of valid indices for the array. */ public val IntArray.indices: IntRange get() = IntRange(0, lastIndex) /** * Returns the range of valid indices for the array. */ public val LongArray.indices: IntRange get() = IntRange(0, lastIndex) /** * Returns the range of valid indices for the array. */ public val FloatArray.indices: IntRange get() = IntRange(0, lastIndex) /** * Returns the range of valid indices for the array. */ public val DoubleArray.indices: IntRange get() = IntRange(0, lastIndex) /** * Returns the range of valid indices for the array. */ public val BooleanArray.indices: IntRange get() = IntRange(0, lastIndex) /** * Returns the range of valid indices for the array. */ public val CharArray.indices: IntRange get() = IntRange(0, lastIndex) /** * Returns `true` if the array is empty. */ @kotlin.internal.InlineOnly public inline fun Array.isEmpty(): Boolean { return size == 0 } /** * Returns `true` if the array is empty. */ @kotlin.internal.InlineOnly public inline fun ByteArray.isEmpty(): Boolean { return size == 0 } /** * Returns `true` if the array is empty. */ @kotlin.internal.InlineOnly public inline fun ShortArray.isEmpty(): Boolean { return size == 0 } /** * Returns `true` if the array is empty. */ @kotlin.internal.InlineOnly public inline fun IntArray.isEmpty(): Boolean { return size == 0 } /** * Returns `true` if the array is empty. */ @kotlin.internal.InlineOnly public inline fun LongArray.isEmpty(): Boolean { return size == 0 } /** * Returns `true` if the array is empty. */ @kotlin.internal.InlineOnly public inline fun FloatArray.isEmpty(): Boolean { return size == 0 } /** * Returns `true` if the array is empty. */ @kotlin.internal.InlineOnly public inline fun DoubleArray.isEmpty(): Boolean { return size == 0 } /** * Returns `true` if the array is empty. */ @kotlin.internal.InlineOnly public inline fun BooleanArray.isEmpty(): Boolean { return size == 0 } /** * Returns `true` if the array is empty. */ @kotlin.internal.InlineOnly public inline fun CharArray.isEmpty(): Boolean { return size == 0 } /** * Returns `true` if the array is not empty. */ @kotlin.internal.InlineOnly public inline fun Array.isNotEmpty(): Boolean { return !isEmpty() } /** * Returns `true` if the array is not empty. */ @kotlin.internal.InlineOnly public inline fun ByteArray.isNotEmpty(): Boolean { return !isEmpty() } /** * Returns `true` if the array is not empty. */ @kotlin.internal.InlineOnly public inline fun ShortArray.isNotEmpty(): Boolean { return !isEmpty() } /** * Returns `true` if the array is not empty. */ @kotlin.internal.InlineOnly public inline fun IntArray.isNotEmpty(): Boolean { return !isEmpty() } /** * Returns `true` if the array is not empty. */ @kotlin.internal.InlineOnly public inline fun LongArray.isNotEmpty(): Boolean { return !isEmpty() } /** * Returns `true` if the array is not empty. */ @kotlin.internal.InlineOnly public inline fun FloatArray.isNotEmpty(): Boolean { return !isEmpty() } /** * Returns `true` if the array is not empty. */ @kotlin.internal.InlineOnly public inline fun DoubleArray.isNotEmpty(): Boolean { return !isEmpty() } /** * Returns `true` if the array is not empty. */ @kotlin.internal.InlineOnly public inline fun BooleanArray.isNotEmpty(): Boolean { return !isEmpty() } /** * Returns `true` if the array is not empty. */ @kotlin.internal.InlineOnly public inline fun CharArray.isNotEmpty(): Boolean { return !isEmpty() } /** * Returns the last valid index for the array. */ public val Array.lastIndex: Int get() = size - 1 /** * Returns the last valid index for the array. */ public val ByteArray.lastIndex: Int get() = size - 1 /** * Returns the last valid index for the array. */ public val ShortArray.lastIndex: Int get() = size - 1 /** * Returns the last valid index for the array. */ public val IntArray.lastIndex: Int get() = size - 1 /** * Returns the last valid index for the array. */ public val LongArray.lastIndex: Int get() = size - 1 /** * Returns the last valid index for the array. */ public val FloatArray.lastIndex: Int get() = size - 1 /** * Returns the last valid index for the array. */ public val DoubleArray.lastIndex: Int get() = size - 1 /** * Returns the last valid index for the array. */ public val BooleanArray.lastIndex: Int get() = size - 1 /** * Returns the last valid index for the array. */ public val CharArray.lastIndex: Int get() = size - 1 /** * Returns an array containing all elements of the original array and then the given [element]. */ public expect operator fun Array.plus(element: T): Array /** * Returns an array containing all elements of the original array and then the given [element]. */ public expect operator fun ByteArray.plus(element: Byte): ByteArray /** * Returns an array containing all elements of the original array and then the given [element]. */ public expect operator fun ShortArray.plus(element: Short): ShortArray /** * Returns an array containing all elements of the original array and then the given [element]. */ public expect operator fun IntArray.plus(element: Int): IntArray /** * Returns an array containing all elements of the original array and then the given [element]. */ public expect operator fun LongArray.plus(element: Long): LongArray /** * Returns an array containing all elements of the original array and then the given [element]. */ public expect operator fun FloatArray.plus(element: Float): FloatArray /** * Returns an array containing all elements of the original array and then the given [element]. */ public expect operator fun DoubleArray.plus(element: Double): DoubleArray /** * Returns an array containing all elements of the original array and then the given [element]. */ public expect operator fun BooleanArray.plus(element: Boolean): BooleanArray /** * Returns an array containing all elements of the original array and then the given [element]. */ public expect operator fun CharArray.plus(element: Char): CharArray /** * Returns an array containing all elements of the original array and then all elements of the given [elements] collection. */ public expect operator fun Array.plus(elements: Collection): Array /** * Returns an array containing all elements of the original array and then all elements of the given [elements] collection. */ public expect operator fun ByteArray.plus(elements: Collection): ByteArray /** * Returns an array containing all elements of the original array and then all elements of the given [elements] collection. */ public expect operator fun ShortArray.plus(elements: Collection): ShortArray /** * Returns an array containing all elements of the original array and then all elements of the given [elements] collection. */ public expect operator fun IntArray.plus(elements: Collection): IntArray /** * Returns an array containing all elements of the original array and then all elements of the given [elements] collection. */ public expect operator fun LongArray.plus(elements: Collection): LongArray /** * Returns an array containing all elements of the original array and then all elements of the given [elements] collection. */ public expect operator fun FloatArray.plus(elements: Collection): FloatArray /** * Returns an array containing all elements of the original array and then all elements of the given [elements] collection. */ public expect operator fun DoubleArray.plus(elements: Collection): DoubleArray /** * Returns an array containing all elements of the original array and then all elements of the given [elements] collection. */ public expect operator fun BooleanArray.plus(elements: Collection): BooleanArray /** * Returns an array containing all elements of the original array and then all elements of the given [elements] collection. */ public expect operator fun CharArray.plus(elements: Collection): CharArray /** * Returns an array containing all elements of the original array and then all elements of the given [elements] array. */ public expect operator fun Array.plus(elements: Array): Array /** * Returns an array containing all elements of the original array and then all elements of the given [elements] array. */ public expect operator fun ByteArray.plus(elements: ByteArray): ByteArray /** * Returns an array containing all elements of the original array and then all elements of the given [elements] array. */ public expect operator fun ShortArray.plus(elements: ShortArray): ShortArray /** * Returns an array containing all elements of the original array and then all elements of the given [elements] array. */ public expect operator fun IntArray.plus(elements: IntArray): IntArray /** * Returns an array containing all elements of the original array and then all elements of the given [elements] array. */ public expect operator fun LongArray.plus(elements: LongArray): LongArray /** * Returns an array containing all elements of the original array and then all elements of the given [elements] array. */ public expect operator fun FloatArray.plus(elements: FloatArray): FloatArray /** * Returns an array containing all elements of the original array and then all elements of the given [elements] array. */ public expect operator fun DoubleArray.plus(elements: DoubleArray): DoubleArray /** * Returns an array containing all elements of the original array and then all elements of the given [elements] array. */ public expect operator fun BooleanArray.plus(elements: BooleanArray): BooleanArray /** * Returns an array containing all elements of the original array and then all elements of the given [elements] array. */ public expect operator fun CharArray.plus(elements: CharArray): CharArray /** * Returns an array containing all elements of the original array and then the given [element]. */ public expect fun Array.plusElement(element: T): Array /** * Sorts the array in-place. * * @sample samples.collections.Arrays.Sorting.sortArray */ public expect fun IntArray.sort(): Unit /** * Sorts the array in-place. * * @sample samples.collections.Arrays.Sorting.sortArray */ public expect fun LongArray.sort(): Unit /** * Sorts the array in-place. * * @sample samples.collections.Arrays.Sorting.sortArray */ public expect fun ByteArray.sort(): Unit /** * Sorts the array in-place. * * @sample samples.collections.Arrays.Sorting.sortArray */ public expect fun ShortArray.sort(): Unit /** * Sorts the array in-place. * * @sample samples.collections.Arrays.Sorting.sortArray */ public expect fun DoubleArray.sort(): Unit /** * Sorts the array in-place. * * @sample samples.collections.Arrays.Sorting.sortArray */ public expect fun FloatArray.sort(): Unit /** * Sorts the array in-place. * * @sample samples.collections.Arrays.Sorting.sortArray */ public expect fun CharArray.sort(): Unit /** * Sorts the array in-place according to the natural order of its elements. * * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting. * * @sample samples.collections.Arrays.Sorting.sortArrayOfComparable */ public expect fun > Array.sort(): Unit /** * Sorts a range in the array in-place. * * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting. * * @param fromIndex the start of the range (inclusive) to sort, 0 by default. * @param toIndex the end of the range (exclusive) to sort, size of this array by default. * * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array. * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex]. * * @sample samples.collections.Arrays.Sorting.sortRangeOfArrayOfComparable */ @SinceKotlin("1.4") public expect fun > Array.sort(fromIndex: Int = 0, toIndex: Int = size): Unit /** * Sorts a range in the array in-place. * * @param fromIndex the start of the range (inclusive) to sort, 0 by default. * @param toIndex the end of the range (exclusive) to sort, size of this array by default. * * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array. * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex]. * * @sample samples.collections.Arrays.Sorting.sortRangeOfArray */ @SinceKotlin("1.4") public expect fun ByteArray.sort(fromIndex: Int = 0, toIndex: Int = size): Unit /** * Sorts a range in the array in-place. * * @param fromIndex the start of the range (inclusive) to sort, 0 by default. * @param toIndex the end of the range (exclusive) to sort, size of this array by default. * * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array. * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex]. * * @sample samples.collections.Arrays.Sorting.sortRangeOfArray */ @SinceKotlin("1.4") public expect fun ShortArray.sort(fromIndex: Int = 0, toIndex: Int = size): Unit /** * Sorts a range in the array in-place. * * @param fromIndex the start of the range (inclusive) to sort, 0 by default. * @param toIndex the end of the range (exclusive) to sort, size of this array by default. * * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array. * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex]. * * @sample samples.collections.Arrays.Sorting.sortRangeOfArray */ @SinceKotlin("1.4") public expect fun IntArray.sort(fromIndex: Int = 0, toIndex: Int = size): Unit /** * Sorts a range in the array in-place. * * @param fromIndex the start of the range (inclusive) to sort, 0 by default. * @param toIndex the end of the range (exclusive) to sort, size of this array by default. * * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array. * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex]. * * @sample samples.collections.Arrays.Sorting.sortRangeOfArray */ @SinceKotlin("1.4") public expect fun LongArray.sort(fromIndex: Int = 0, toIndex: Int = size): Unit /** * Sorts a range in the array in-place. * * @param fromIndex the start of the range (inclusive) to sort, 0 by default. * @param toIndex the end of the range (exclusive) to sort, size of this array by default. * * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array. * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex]. * * @sample samples.collections.Arrays.Sorting.sortRangeOfArray */ @SinceKotlin("1.4") public expect fun FloatArray.sort(fromIndex: Int = 0, toIndex: Int = size): Unit /** * Sorts a range in the array in-place. * * @param fromIndex the start of the range (inclusive) to sort, 0 by default. * @param toIndex the end of the range (exclusive) to sort, size of this array by default. * * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array. * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex]. * * @sample samples.collections.Arrays.Sorting.sortRangeOfArray */ @SinceKotlin("1.4") public expect fun DoubleArray.sort(fromIndex: Int = 0, toIndex: Int = size): Unit /** * Sorts a range in the array in-place. * * @param fromIndex the start of the range (inclusive) to sort, 0 by default. * @param toIndex the end of the range (exclusive) to sort, size of this array by default. * * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array. * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex]. * * @sample samples.collections.Arrays.Sorting.sortRangeOfArray */ @SinceKotlin("1.4") public expect fun CharArray.sort(fromIndex: Int = 0, toIndex: Int = size): Unit /** * Sorts elements of the array in the specified range in-place. * The elements are sorted descending according to their natural sort order. * * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting. * * @param fromIndex the start of the range (inclusive) to sort. * @param toIndex the end of the range (exclusive) to sort. * * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array. * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex]. */ @SinceKotlin("1.4") public fun > Array.sortDescending(fromIndex: Int, toIndex: Int): Unit { sortWith(reverseOrder(), fromIndex, toIndex) } /** * Sorts elements of the array in the specified range in-place. * The elements are sorted descending according to their natural sort order. * * @param fromIndex the start of the range (inclusive) to sort. * @param toIndex the end of the range (exclusive) to sort. * * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array. * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex]. */ @SinceKotlin("1.4") public fun ByteArray.sortDescending(fromIndex: Int, toIndex: Int): Unit { sort(fromIndex, toIndex) reverse(fromIndex, toIndex) } /** * Sorts elements of the array in the specified range in-place. * The elements are sorted descending according to their natural sort order. * * @param fromIndex the start of the range (inclusive) to sort. * @param toIndex the end of the range (exclusive) to sort. * * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array. * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex]. */ @SinceKotlin("1.4") public fun ShortArray.sortDescending(fromIndex: Int, toIndex: Int): Unit { sort(fromIndex, toIndex) reverse(fromIndex, toIndex) } /** * Sorts elements of the array in the specified range in-place. * The elements are sorted descending according to their natural sort order. * * @param fromIndex the start of the range (inclusive) to sort. * @param toIndex the end of the range (exclusive) to sort. * * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array. * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex]. */ @SinceKotlin("1.4") public fun IntArray.sortDescending(fromIndex: Int, toIndex: Int): Unit { sort(fromIndex, toIndex) reverse(fromIndex, toIndex) } /** * Sorts elements of the array in the specified range in-place. * The elements are sorted descending according to their natural sort order. * * @param fromIndex the start of the range (inclusive) to sort. * @param toIndex the end of the range (exclusive) to sort. * * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array. * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex]. */ @SinceKotlin("1.4") public fun LongArray.sortDescending(fromIndex: Int, toIndex: Int): Unit { sort(fromIndex, toIndex) reverse(fromIndex, toIndex) } /** * Sorts elements of the array in the specified range in-place. * The elements are sorted descending according to their natural sort order. * * @param fromIndex the start of the range (inclusive) to sort. * @param toIndex the end of the range (exclusive) to sort. * * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array. * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex]. */ @SinceKotlin("1.4") public fun FloatArray.sortDescending(fromIndex: Int, toIndex: Int): Unit { sort(fromIndex, toIndex) reverse(fromIndex, toIndex) } /** * Sorts elements of the array in the specified range in-place. * The elements are sorted descending according to their natural sort order. * * @param fromIndex the start of the range (inclusive) to sort. * @param toIndex the end of the range (exclusive) to sort. * * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array. * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex]. */ @SinceKotlin("1.4") public fun DoubleArray.sortDescending(fromIndex: Int, toIndex: Int): Unit { sort(fromIndex, toIndex) reverse(fromIndex, toIndex) } /** * Sorts elements of the array in the specified range in-place. * The elements are sorted descending according to their natural sort order. * * @param fromIndex the start of the range (inclusive) to sort. * @param toIndex the end of the range (exclusive) to sort. * * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array. * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex]. */ @SinceKotlin("1.4") public fun CharArray.sortDescending(fromIndex: Int, toIndex: Int): Unit { sort(fromIndex, toIndex) reverse(fromIndex, toIndex) } /** * Sorts the array in-place according to the order specified by the given [comparator]. * * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting. */ public expect fun Array.sortWith(comparator: Comparator): Unit /** * Sorts a range in the array in-place with the given [comparator]. * * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting. * * @param fromIndex the start of the range (inclusive) to sort, 0 by default. * @param toIndex the end of the range (exclusive) to sort, size of this array by default. * * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array. * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex]. */ public expect fun Array.sortWith(comparator: Comparator, fromIndex: Int = 0, toIndex: Int = size): Unit /** * Returns an array of Boolean containing all of the elements of this generic array. */ public fun Array.toBooleanArray(): BooleanArray { return BooleanArray(size) { index -> this[index] } } /** * Returns an array of Byte containing all of the elements of this generic array. */ public fun Array.toByteArray(): ByteArray { return ByteArray(size) { index -> this[index] } } /** * Returns an array of Char containing all of the elements of this generic array. */ public fun Array.toCharArray(): CharArray { return CharArray(size) { index -> this[index] } } /** * Returns an array of Double containing all of the elements of this generic array. */ public fun Array.toDoubleArray(): DoubleArray { return DoubleArray(size) { index -> this[index] } } /** * Returns an array of Float containing all of the elements of this generic array. */ public fun Array.toFloatArray(): FloatArray { return FloatArray(size) { index -> this[index] } } /** * Returns an array of Int containing all of the elements of this generic array. */ public fun Array.toIntArray(): IntArray { return IntArray(size) { index -> this[index] } } /** * Returns an array of Long containing all of the elements of this generic array. */ public fun Array.toLongArray(): LongArray { return LongArray(size) { index -> this[index] } } /** * Returns an array of Short containing all of the elements of this generic array. */ public fun Array.toShortArray(): ShortArray { return ShortArray(size) { index -> this[index] } } /** * Returns a *typed* object array containing all of the elements of this primitive array. */ public expect fun ByteArray.toTypedArray(): Array /** * Returns a *typed* object array containing all of the elements of this primitive array. */ public expect fun ShortArray.toTypedArray(): Array /** * Returns a *typed* object array containing all of the elements of this primitive array. */ public expect fun IntArray.toTypedArray(): Array /** * Returns a *typed* object array containing all of the elements of this primitive array. */ public expect fun LongArray.toTypedArray(): Array /** * Returns a *typed* object array containing all of the elements of this primitive array. */ public expect fun FloatArray.toTypedArray(): Array /** * Returns a *typed* object array containing all of the elements of this primitive array. */ public expect fun DoubleArray.toTypedArray(): Array /** * Returns a *typed* object array containing all of the elements of this primitive array. */ public expect fun BooleanArray.toTypedArray(): Array /** * Returns a *typed* object array containing all of the elements of this primitive array. */ public expect fun CharArray.toTypedArray(): Array /** * Returns a [Map] containing key-value pairs provided by [transform] function * applied to elements of the given array. * * If any of two pairs would have the same key the last one gets added to the map. * * The returned map preserves the entry iteration order of the original array. * * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitives */ public inline fun Array.associate(transform: (T) -> Pair): Map { val capacity = mapCapacity(size).coerceAtLeast(16) return associateTo(LinkedHashMap(capacity), transform) } /** * Returns a [Map] containing key-value pairs provided by [transform] function * applied to elements of the given array. * * If any of two pairs would have the same key the last one gets added to the map. * * The returned map preserves the entry iteration order of the original array. * * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitives */ public inline fun ByteArray.associate(transform: (Byte) -> Pair): Map { val capacity = mapCapacity(size).coerceAtLeast(16) return associateTo(LinkedHashMap(capacity), transform) } /** * Returns a [Map] containing key-value pairs provided by [transform] function * applied to elements of the given array. * * If any of two pairs would have the same key the last one gets added to the map. * * The returned map preserves the entry iteration order of the original array. * * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitives */ public inline fun ShortArray.associate(transform: (Short) -> Pair): Map { val capacity = mapCapacity(size).coerceAtLeast(16) return associateTo(LinkedHashMap(capacity), transform) } /** * Returns a [Map] containing key-value pairs provided by [transform] function * applied to elements of the given array. * * If any of two pairs would have the same key the last one gets added to the map. * * The returned map preserves the entry iteration order of the original array. * * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitives */ public inline fun IntArray.associate(transform: (Int) -> Pair): Map { val capacity = mapCapacity(size).coerceAtLeast(16) return associateTo(LinkedHashMap(capacity), transform) } /** * Returns a [Map] containing key-value pairs provided by [transform] function * applied to elements of the given array. * * If any of two pairs would have the same key the last one gets added to the map. * * The returned map preserves the entry iteration order of the original array. * * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitives */ public inline fun LongArray.associate(transform: (Long) -> Pair): Map { val capacity = mapCapacity(size).coerceAtLeast(16) return associateTo(LinkedHashMap(capacity), transform) } /** * Returns a [Map] containing key-value pairs provided by [transform] function * applied to elements of the given array. * * If any of two pairs would have the same key the last one gets added to the map. * * The returned map preserves the entry iteration order of the original array. * * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitives */ public inline fun FloatArray.associate(transform: (Float) -> Pair): Map { val capacity = mapCapacity(size).coerceAtLeast(16) return associateTo(LinkedHashMap(capacity), transform) } /** * Returns a [Map] containing key-value pairs provided by [transform] function * applied to elements of the given array. * * If any of two pairs would have the same key the last one gets added to the map. * * The returned map preserves the entry iteration order of the original array. * * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitives */ public inline fun DoubleArray.associate(transform: (Double) -> Pair): Map { val capacity = mapCapacity(size).coerceAtLeast(16) return associateTo(LinkedHashMap(capacity), transform) } /** * Returns a [Map] containing key-value pairs provided by [transform] function * applied to elements of the given array. * * If any of two pairs would have the same key the last one gets added to the map. * * The returned map preserves the entry iteration order of the original array. * * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitives */ public inline fun BooleanArray.associate(transform: (Boolean) -> Pair): Map { val capacity = mapCapacity(size).coerceAtLeast(16) return associateTo(LinkedHashMap(capacity), transform) } /** * Returns a [Map] containing key-value pairs provided by [transform] function * applied to elements of the given array. * * If any of two pairs would have the same key the last one gets added to the map. * * The returned map preserves the entry iteration order of the original array. * * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitives */ public inline fun CharArray.associate(transform: (Char) -> Pair): Map { val capacity = mapCapacity(size).coerceAtLeast(16) return associateTo(LinkedHashMap(capacity), transform) } /** * Returns a [Map] containing the elements from the given array indexed by the key * returned from [keySelector] function applied to each element. * * If any two elements would have the same key returned by [keySelector] the last one gets added to the map. * * The returned map preserves the entry iteration order of the original array. * * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesBy */ public inline fun Array.associateBy(keySelector: (T) -> K): Map { val capacity = mapCapacity(size).coerceAtLeast(16) return associateByTo(LinkedHashMap(capacity), keySelector) } /** * Returns a [Map] containing the elements from the given array indexed by the key * returned from [keySelector] function applied to each element. * * If any two elements would have the same key returned by [keySelector] the last one gets added to the map. * * The returned map preserves the entry iteration order of the original array. * * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesBy */ public inline fun ByteArray.associateBy(keySelector: (Byte) -> K): Map { val capacity = mapCapacity(size).coerceAtLeast(16) return associateByTo(LinkedHashMap(capacity), keySelector) } /** * Returns a [Map] containing the elements from the given array indexed by the key * returned from [keySelector] function applied to each element. * * If any two elements would have the same key returned by [keySelector] the last one gets added to the map. * * The returned map preserves the entry iteration order of the original array. * * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesBy */ public inline fun ShortArray.associateBy(keySelector: (Short) -> K): Map { val capacity = mapCapacity(size).coerceAtLeast(16) return associateByTo(LinkedHashMap(capacity), keySelector) } /** * Returns a [Map] containing the elements from the given array indexed by the key * returned from [keySelector] function applied to each element. * * If any two elements would have the same key returned by [keySelector] the last one gets added to the map. * * The returned map preserves the entry iteration order of the original array. * * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesBy */ public inline fun IntArray.associateBy(keySelector: (Int) -> K): Map { val capacity = mapCapacity(size).coerceAtLeast(16) return associateByTo(LinkedHashMap(capacity), keySelector) } /** * Returns a [Map] containing the elements from the given array indexed by the key * returned from [keySelector] function applied to each element. * * If any two elements would have the same key returned by [keySelector] the last one gets added to the map. * * The returned map preserves the entry iteration order of the original array. * * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesBy */ public inline fun LongArray.associateBy(keySelector: (Long) -> K): Map { val capacity = mapCapacity(size).coerceAtLeast(16) return associateByTo(LinkedHashMap(capacity), keySelector) } /** * Returns a [Map] containing the elements from the given array indexed by the key * returned from [keySelector] function applied to each element. * * If any two elements would have the same key returned by [keySelector] the last one gets added to the map. * * The returned map preserves the entry iteration order of the original array. * * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesBy */ public inline fun FloatArray.associateBy(keySelector: (Float) -> K): Map { val capacity = mapCapacity(size).coerceAtLeast(16) return associateByTo(LinkedHashMap(capacity), keySelector) } /** * Returns a [Map] containing the elements from the given array indexed by the key * returned from [keySelector] function applied to each element. * * If any two elements would have the same key returned by [keySelector] the last one gets added to the map. * * The returned map preserves the entry iteration order of the original array. * * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesBy */ public inline fun DoubleArray.associateBy(keySelector: (Double) -> K): Map { val capacity = mapCapacity(size).coerceAtLeast(16) return associateByTo(LinkedHashMap(capacity), keySelector) } /** * Returns a [Map] containing the elements from the given array indexed by the key * returned from [keySelector] function applied to each element. * * If any two elements would have the same key returned by [keySelector] the last one gets added to the map. * * The returned map preserves the entry iteration order of the original array. * * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesBy */ public inline fun BooleanArray.associateBy(keySelector: (Boolean) -> K): Map { val capacity = mapCapacity(size).coerceAtLeast(16) return associateByTo(LinkedHashMap(capacity), keySelector) } /** * Returns a [Map] containing the elements from the given array indexed by the key * returned from [keySelector] function applied to each element. * * If any two elements would have the same key returned by [keySelector] the last one gets added to the map. * * The returned map preserves the entry iteration order of the original array. * * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesBy */ public inline fun CharArray.associateBy(keySelector: (Char) -> K): Map { val capacity = mapCapacity(size).coerceAtLeast(16) return associateByTo(LinkedHashMap(capacity), keySelector) } /** * Returns a [Map] containing the values provided by [valueTransform] and indexed by [keySelector] functions applied to elements of the given array. * * If any two elements would have the same key returned by [keySelector] the last one gets added to the map. * * The returned map preserves the entry iteration order of the original array. * * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesByWithValueTransform */ public inline fun Array.associateBy(keySelector: (T) -> K, valueTransform: (T) -> V): Map { val capacity = mapCapacity(size).coerceAtLeast(16) return associateByTo(LinkedHashMap(capacity), keySelector, valueTransform) } /** * Returns a [Map] containing the values provided by [valueTransform] and indexed by [keySelector] functions applied to elements of the given array. * * If any two elements would have the same key returned by [keySelector] the last one gets added to the map. * * The returned map preserves the entry iteration order of the original array. * * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesByWithValueTransform */ public inline fun ByteArray.associateBy(keySelector: (Byte) -> K, valueTransform: (Byte) -> V): Map { val capacity = mapCapacity(size).coerceAtLeast(16) return associateByTo(LinkedHashMap(capacity), keySelector, valueTransform) } /** * Returns a [Map] containing the values provided by [valueTransform] and indexed by [keySelector] functions applied to elements of the given array. * * If any two elements would have the same key returned by [keySelector] the last one gets added to the map. * * The returned map preserves the entry iteration order of the original array. * * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesByWithValueTransform */ public inline fun ShortArray.associateBy(keySelector: (Short) -> K, valueTransform: (Short) -> V): Map { val capacity = mapCapacity(size).coerceAtLeast(16) return associateByTo(LinkedHashMap(capacity), keySelector, valueTransform) } /** * Returns a [Map] containing the values provided by [valueTransform] and indexed by [keySelector] functions applied to elements of the given array. * * If any two elements would have the same key returned by [keySelector] the last one gets added to the map. * * The returned map preserves the entry iteration order of the original array. * * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesByWithValueTransform */ public inline fun IntArray.associateBy(keySelector: (Int) -> K, valueTransform: (Int) -> V): Map { val capacity = mapCapacity(size).coerceAtLeast(16) return associateByTo(LinkedHashMap(capacity), keySelector, valueTransform) } /** * Returns a [Map] containing the values provided by [valueTransform] and indexed by [keySelector] functions applied to elements of the given array. * * If any two elements would have the same key returned by [keySelector] the last one gets added to the map. * * The returned map preserves the entry iteration order of the original array. * * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesByWithValueTransform */ public inline fun LongArray.associateBy(keySelector: (Long) -> K, valueTransform: (Long) -> V): Map { val capacity = mapCapacity(size).coerceAtLeast(16) return associateByTo(LinkedHashMap(capacity), keySelector, valueTransform) } /** * Returns a [Map] containing the values provided by [valueTransform] and indexed by [keySelector] functions applied to elements of the given array. * * If any two elements would have the same key returned by [keySelector] the last one gets added to the map. * * The returned map preserves the entry iteration order of the original array. * * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesByWithValueTransform */ public inline fun FloatArray.associateBy(keySelector: (Float) -> K, valueTransform: (Float) -> V): Map { val capacity = mapCapacity(size).coerceAtLeast(16) return associateByTo(LinkedHashMap(capacity), keySelector, valueTransform) } /** * Returns a [Map] containing the values provided by [valueTransform] and indexed by [keySelector] functions applied to elements of the given array. * * If any two elements would have the same key returned by [keySelector] the last one gets added to the map. * * The returned map preserves the entry iteration order of the original array. * * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesByWithValueTransform */ public inline fun DoubleArray.associateBy(keySelector: (Double) -> K, valueTransform: (Double) -> V): Map { val capacity = mapCapacity(size).coerceAtLeast(16) return associateByTo(LinkedHashMap(capacity), keySelector, valueTransform) } /** * Returns a [Map] containing the values provided by [valueTransform] and indexed by [keySelector] functions applied to elements of the given array. * * If any two elements would have the same key returned by [keySelector] the last one gets added to the map. * * The returned map preserves the entry iteration order of the original array. * * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesByWithValueTransform */ public inline fun BooleanArray.associateBy(keySelector: (Boolean) -> K, valueTransform: (Boolean) -> V): Map { val capacity = mapCapacity(size).coerceAtLeast(16) return associateByTo(LinkedHashMap(capacity), keySelector, valueTransform) } /** * Returns a [Map] containing the values provided by [valueTransform] and indexed by [keySelector] functions applied to elements of the given array. * * If any two elements would have the same key returned by [keySelector] the last one gets added to the map. * * The returned map preserves the entry iteration order of the original array. * * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesByWithValueTransform */ public inline fun CharArray.associateBy(keySelector: (Char) -> K, valueTransform: (Char) -> V): Map { val capacity = mapCapacity(size).coerceAtLeast(16) return associateByTo(LinkedHashMap(capacity), keySelector, valueTransform) } /** * Populates and returns the [destination] mutable map with key-value pairs, * where key is provided by the [keySelector] function applied to each element of the given array * and value is the element itself. * * If any two elements would have the same key returned by [keySelector] the last one gets added to the map. * * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesByTo */ public inline fun > Array.associateByTo(destination: M, keySelector: (T) -> K): M { for (element in this) { destination.put(keySelector(element), element) } return destination } /** * Populates and returns the [destination] mutable map with key-value pairs, * where key is provided by the [keySelector] function applied to each element of the given array * and value is the element itself. * * If any two elements would have the same key returned by [keySelector] the last one gets added to the map. * * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesByTo */ public inline fun > ByteArray.associateByTo(destination: M, keySelector: (Byte) -> K): M { for (element in this) { destination.put(keySelector(element), element) } return destination } /** * Populates and returns the [destination] mutable map with key-value pairs, * where key is provided by the [keySelector] function applied to each element of the given array * and value is the element itself. * * If any two elements would have the same key returned by [keySelector] the last one gets added to the map. * * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesByTo */ public inline fun > ShortArray.associateByTo(destination: M, keySelector: (Short) -> K): M { for (element in this) { destination.put(keySelector(element), element) } return destination } /** * Populates and returns the [destination] mutable map with key-value pairs, * where key is provided by the [keySelector] function applied to each element of the given array * and value is the element itself. * * If any two elements would have the same key returned by [keySelector] the last one gets added to the map. * * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesByTo */ public inline fun > IntArray.associateByTo(destination: M, keySelector: (Int) -> K): M { for (element in this) { destination.put(keySelector(element), element) } return destination } /** * Populates and returns the [destination] mutable map with key-value pairs, * where key is provided by the [keySelector] function applied to each element of the given array * and value is the element itself. * * If any two elements would have the same key returned by [keySelector] the last one gets added to the map. * * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesByTo */ public inline fun > LongArray.associateByTo(destination: M, keySelector: (Long) -> K): M { for (element in this) { destination.put(keySelector(element), element) } return destination } /** * Populates and returns the [destination] mutable map with key-value pairs, * where key is provided by the [keySelector] function applied to each element of the given array * and value is the element itself. * * If any two elements would have the same key returned by [keySelector] the last one gets added to the map. * * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesByTo */ public inline fun > FloatArray.associateByTo(destination: M, keySelector: (Float) -> K): M { for (element in this) { destination.put(keySelector(element), element) } return destination } /** * Populates and returns the [destination] mutable map with key-value pairs, * where key is provided by the [keySelector] function applied to each element of the given array * and value is the element itself. * * If any two elements would have the same key returned by [keySelector] the last one gets added to the map. * * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesByTo */ public inline fun > DoubleArray.associateByTo(destination: M, keySelector: (Double) -> K): M { for (element in this) { destination.put(keySelector(element), element) } return destination } /** * Populates and returns the [destination] mutable map with key-value pairs, * where key is provided by the [keySelector] function applied to each element of the given array * and value is the element itself. * * If any two elements would have the same key returned by [keySelector] the last one gets added to the map. * * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesByTo */ public inline fun > BooleanArray.associateByTo(destination: M, keySelector: (Boolean) -> K): M { for (element in this) { destination.put(keySelector(element), element) } return destination } /** * Populates and returns the [destination] mutable map with key-value pairs, * where key is provided by the [keySelector] function applied to each element of the given array * and value is the element itself. * * If any two elements would have the same key returned by [keySelector] the last one gets added to the map. * * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesByTo */ public inline fun > CharArray.associateByTo(destination: M, keySelector: (Char) -> K): M { for (element in this) { destination.put(keySelector(element), element) } return destination } /** * Populates and returns the [destination] mutable map with key-value pairs, * where key is provided by the [keySelector] function and * and value is provided by the [valueTransform] function applied to elements of the given array. * * If any two elements would have the same key returned by [keySelector] the last one gets added to the map. * * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesByToWithValueTransform */ public inline fun > Array.associateByTo(destination: M, keySelector: (T) -> K, valueTransform: (T) -> V): M { for (element in this) { destination.put(keySelector(element), valueTransform(element)) } return destination } /** * Populates and returns the [destination] mutable map with key-value pairs, * where key is provided by the [keySelector] function and * and value is provided by the [valueTransform] function applied to elements of the given array. * * If any two elements would have the same key returned by [keySelector] the last one gets added to the map. * * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesByToWithValueTransform */ public inline fun > ByteArray.associateByTo(destination: M, keySelector: (Byte) -> K, valueTransform: (Byte) -> V): M { for (element in this) { destination.put(keySelector(element), valueTransform(element)) } return destination } /** * Populates and returns the [destination] mutable map with key-value pairs, * where key is provided by the [keySelector] function and * and value is provided by the [valueTransform] function applied to elements of the given array. * * If any two elements would have the same key returned by [keySelector] the last one gets added to the map. * * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesByToWithValueTransform */ public inline fun > ShortArray.associateByTo(destination: M, keySelector: (Short) -> K, valueTransform: (Short) -> V): M { for (element in this) { destination.put(keySelector(element), valueTransform(element)) } return destination } /** * Populates and returns the [destination] mutable map with key-value pairs, * where key is provided by the [keySelector] function and * and value is provided by the [valueTransform] function applied to elements of the given array. * * If any two elements would have the same key returned by [keySelector] the last one gets added to the map. * * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesByToWithValueTransform */ public inline fun > IntArray.associateByTo(destination: M, keySelector: (Int) -> K, valueTransform: (Int) -> V): M { for (element in this) { destination.put(keySelector(element), valueTransform(element)) } return destination } /** * Populates and returns the [destination] mutable map with key-value pairs, * where key is provided by the [keySelector] function and * and value is provided by the [valueTransform] function applied to elements of the given array. * * If any two elements would have the same key returned by [keySelector] the last one gets added to the map. * * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesByToWithValueTransform */ public inline fun > LongArray.associateByTo(destination: M, keySelector: (Long) -> K, valueTransform: (Long) -> V): M { for (element in this) { destination.put(keySelector(element), valueTransform(element)) } return destination } /** * Populates and returns the [destination] mutable map with key-value pairs, * where key is provided by the [keySelector] function and * and value is provided by the [valueTransform] function applied to elements of the given array. * * If any two elements would have the same key returned by [keySelector] the last one gets added to the map. * * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesByToWithValueTransform */ public inline fun > FloatArray.associateByTo(destination: M, keySelector: (Float) -> K, valueTransform: (Float) -> V): M { for (element in this) { destination.put(keySelector(element), valueTransform(element)) } return destination } /** * Populates and returns the [destination] mutable map with key-value pairs, * where key is provided by the [keySelector] function and * and value is provided by the [valueTransform] function applied to elements of the given array. * * If any two elements would have the same key returned by [keySelector] the last one gets added to the map. * * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesByToWithValueTransform */ public inline fun > DoubleArray.associateByTo(destination: M, keySelector: (Double) -> K, valueTransform: (Double) -> V): M { for (element in this) { destination.put(keySelector(element), valueTransform(element)) } return destination } /** * Populates and returns the [destination] mutable map with key-value pairs, * where key is provided by the [keySelector] function and * and value is provided by the [valueTransform] function applied to elements of the given array. * * If any two elements would have the same key returned by [keySelector] the last one gets added to the map. * * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesByToWithValueTransform */ public inline fun > BooleanArray.associateByTo(destination: M, keySelector: (Boolean) -> K, valueTransform: (Boolean) -> V): M { for (element in this) { destination.put(keySelector(element), valueTransform(element)) } return destination } /** * Populates and returns the [destination] mutable map with key-value pairs, * where key is provided by the [keySelector] function and * and value is provided by the [valueTransform] function applied to elements of the given array. * * If any two elements would have the same key returned by [keySelector] the last one gets added to the map. * * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesByToWithValueTransform */ public inline fun > CharArray.associateByTo(destination: M, keySelector: (Char) -> K, valueTransform: (Char) -> V): M { for (element in this) { destination.put(keySelector(element), valueTransform(element)) } return destination } /** * Populates and returns the [destination] mutable map with key-value pairs * provided by [transform] function applied to each element of the given array. * * If any of two pairs would have the same key the last one gets added to the map. * * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesTo */ public inline fun > Array.associateTo(destination: M, transform: (T) -> Pair): M { for (element in this) { destination += transform(element) } return destination } /** * Populates and returns the [destination] mutable map with key-value pairs * provided by [transform] function applied to each element of the given array. * * If any of two pairs would have the same key the last one gets added to the map. * * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesTo */ public inline fun > ByteArray.associateTo(destination: M, transform: (Byte) -> Pair): M { for (element in this) { destination += transform(element) } return destination } /** * Populates and returns the [destination] mutable map with key-value pairs * provided by [transform] function applied to each element of the given array. * * If any of two pairs would have the same key the last one gets added to the map. * * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesTo */ public inline fun > ShortArray.associateTo(destination: M, transform: (Short) -> Pair): M { for (element in this) { destination += transform(element) } return destination } /** * Populates and returns the [destination] mutable map with key-value pairs * provided by [transform] function applied to each element of the given array. * * If any of two pairs would have the same key the last one gets added to the map. * * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesTo */ public inline fun > IntArray.associateTo(destination: M, transform: (Int) -> Pair): M { for (element in this) { destination += transform(element) } return destination } /** * Populates and returns the [destination] mutable map with key-value pairs * provided by [transform] function applied to each element of the given array. * * If any of two pairs would have the same key the last one gets added to the map. * * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesTo */ public inline fun > LongArray.associateTo(destination: M, transform: (Long) -> Pair): M { for (element in this) { destination += transform(element) } return destination } /** * Populates and returns the [destination] mutable map with key-value pairs * provided by [transform] function applied to each element of the given array. * * If any of two pairs would have the same key the last one gets added to the map. * * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesTo */ public inline fun > FloatArray.associateTo(destination: M, transform: (Float) -> Pair): M { for (element in this) { destination += transform(element) } return destination } /** * Populates and returns the [destination] mutable map with key-value pairs * provided by [transform] function applied to each element of the given array. * * If any of two pairs would have the same key the last one gets added to the map. * * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesTo */ public inline fun > DoubleArray.associateTo(destination: M, transform: (Double) -> Pair): M { for (element in this) { destination += transform(element) } return destination } /** * Populates and returns the [destination] mutable map with key-value pairs * provided by [transform] function applied to each element of the given array. * * If any of two pairs would have the same key the last one gets added to the map. * * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesTo */ public inline fun > BooleanArray.associateTo(destination: M, transform: (Boolean) -> Pair): M { for (element in this) { destination += transform(element) } return destination } /** * Populates and returns the [destination] mutable map with key-value pairs * provided by [transform] function applied to each element of the given array. * * If any of two pairs would have the same key the last one gets added to the map. * * @sample samples.collections.Arrays.Transformations.associateArrayOfPrimitivesTo */ public inline fun > CharArray.associateTo(destination: M, transform: (Char) -> Pair): M { for (element in this) { destination += transform(element) } return destination } /** * Returns a [Map] where keys are elements from the given array and values are * produced by the [valueSelector] function applied to each element. * * If any two elements are equal, the last one gets added to the map. * * The returned map preserves the entry iteration order of the original array. * * @sample samples.collections.Collections.Transformations.associateWith */ @SinceKotlin("1.4") public inline fun Array.associateWith(valueSelector: (K) -> V): Map { val result = LinkedHashMap(mapCapacity(size).coerceAtLeast(16)) return associateWithTo(result, valueSelector) } /** * Returns a [Map] where keys are elements from the given array and values are * produced by the [valueSelector] function applied to each element. * * If any two elements are equal, the last one gets added to the map. * * The returned map preserves the entry iteration order of the original array. * * @sample samples.collections.Collections.Transformations.associateWith */ @SinceKotlin("1.4") @kotlin.internal.InlineOnly public inline fun ByteArray.associateWith(valueSelector: (Byte) -> V): Map { val result = LinkedHashMap(mapCapacity(size).coerceAtLeast(16)) return associateWithTo(result, valueSelector) } /** * Returns a [Map] where keys are elements from the given array and values are * produced by the [valueSelector] function applied to each element. * * If any two elements are equal, the last one gets added to the map. * * The returned map preserves the entry iteration order of the original array. * * @sample samples.collections.Collections.Transformations.associateWith */ @SinceKotlin("1.4") @kotlin.internal.InlineOnly public inline fun ShortArray.associateWith(valueSelector: (Short) -> V): Map { val result = LinkedHashMap(mapCapacity(size).coerceAtLeast(16)) return associateWithTo(result, valueSelector) } /** * Returns a [Map] where keys are elements from the given array and values are * produced by the [valueSelector] function applied to each element. * * If any two elements are equal, the last one gets added to the map. * * The returned map preserves the entry iteration order of the original array. * * @sample samples.collections.Collections.Transformations.associateWith */ @SinceKotlin("1.4") @kotlin.internal.InlineOnly public inline fun IntArray.associateWith(valueSelector: (Int) -> V): Map { val result = LinkedHashMap(mapCapacity(size).coerceAtLeast(16)) return associateWithTo(result, valueSelector) } /** * Returns a [Map] where keys are elements from the given array and values are * produced by the [valueSelector] function applied to each element. * * If any two elements are equal, the last one gets added to the map. * * The returned map preserves the entry iteration order of the original array. * * @sample samples.collections.Collections.Transformations.associateWith */ @SinceKotlin("1.4") @kotlin.internal.InlineOnly public inline fun LongArray.associateWith(valueSelector: (Long) -> V): Map { val result = LinkedHashMap(mapCapacity(size).coerceAtLeast(16)) return associateWithTo(result, valueSelector) } /** * Returns a [Map] where keys are elements from the given array and values are * produced by the [valueSelector] function applied to each element. * * If any two elements are equal, the last one gets added to the map. * * The returned map preserves the entry iteration order of the original array. * * @sample samples.collections.Collections.Transformations.associateWith */ @SinceKotlin("1.4") @kotlin.internal.InlineOnly public inline fun FloatArray.associateWith(valueSelector: (Float) -> V): Map { val result = LinkedHashMap(mapCapacity(size).coerceAtLeast(16)) return associateWithTo(result, valueSelector) } /** * Returns a [Map] where keys are elements from the given array and values are * produced by the [valueSelector] function applied to each element. * * If any two elements are equal, the last one gets added to the map. * * The returned map preserves the entry iteration order of the original array. * * @sample samples.collections.Collections.Transformations.associateWith */ @SinceKotlin("1.4") @kotlin.internal.InlineOnly public inline fun DoubleArray.associateWith(valueSelector: (Double) -> V): Map { val result = LinkedHashMap(mapCapacity(size).coerceAtLeast(16)) return associateWithTo(result, valueSelector) } /** * Returns a [Map] where keys are elements from the given array and values are * produced by the [valueSelector] function applied to each element. * * If any two elements are equal, the last one gets added to the map. * * The returned map preserves the entry iteration order of the original array. * * @sample samples.collections.Collections.Transformations.associateWith */ @SinceKotlin("1.4") @kotlin.internal.InlineOnly public inline fun BooleanArray.associateWith(valueSelector: (Boolean) -> V): Map { val result = LinkedHashMap(mapCapacity(size).coerceAtLeast(16)) return associateWithTo(result, valueSelector) } /** * Returns a [Map] where keys are elements from the given array and values are * produced by the [valueSelector] function applied to each element. * * If any two elements are equal, the last one gets added to the map. * * The returned map preserves the entry iteration order of the original array. * * @sample samples.collections.Collections.Transformations.associateWith */ @SinceKotlin("1.4") @kotlin.internal.InlineOnly public inline fun CharArray.associateWith(valueSelector: (Char) -> V): Map { val result = LinkedHashMap(mapCapacity(size.coerceAtMost(128)).coerceAtLeast(16)) return associateWithTo(result, valueSelector) } /** * Populates and returns the [destination] mutable map with key-value pairs for each element of the given array, * where key is the element itself and value is provided by the [valueSelector] function applied to that key. * * If any two elements are equal, the last one overwrites the former value in the map. * * @sample samples.collections.Collections.Transformations.associateWithTo */ @SinceKotlin("1.4") public inline fun > Array.associateWithTo(destination: M, valueSelector: (K) -> V): M { for (element in this) { destination.put(element, valueSelector(element)) } return destination } /** * Populates and returns the [destination] mutable map with key-value pairs for each element of the given array, * where key is the element itself and value is provided by the [valueSelector] function applied to that key. * * If any two elements are equal, the last one overwrites the former value in the map. * * @sample samples.collections.Collections.Transformations.associateWithTo */ @SinceKotlin("1.4") @kotlin.internal.InlineOnly public inline fun > ByteArray.associateWithTo(destination: M, valueSelector: (Byte) -> V): M { for (element in this) { destination.put(element, valueSelector(element)) } return destination } /** * Populates and returns the [destination] mutable map with key-value pairs for each element of the given array, * where key is the element itself and value is provided by the [valueSelector] function applied to that key. * * If any two elements are equal, the last one overwrites the former value in the map. * * @sample samples.collections.Collections.Transformations.associateWithTo */ @SinceKotlin("1.4") @kotlin.internal.InlineOnly public inline fun > ShortArray.associateWithTo(destination: M, valueSelector: (Short) -> V): M { for (element in this) { destination.put(element, valueSelector(element)) } return destination } /** * Populates and returns the [destination] mutable map with key-value pairs for each element of the given array, * where key is the element itself and value is provided by the [valueSelector] function applied to that key. * * If any two elements are equal, the last one overwrites the former value in the map. * * @sample samples.collections.Collections.Transformations.associateWithTo */ @SinceKotlin("1.4") @kotlin.internal.InlineOnly public inline fun > IntArray.associateWithTo(destination: M, valueSelector: (Int) -> V): M { for (element in this) { destination.put(element, valueSelector(element)) } return destination } /** * Populates and returns the [destination] mutable map with key-value pairs for each element of the given array, * where key is the element itself and value is provided by the [valueSelector] function applied to that key. * * If any two elements are equal, the last one overwrites the former value in the map. * * @sample samples.collections.Collections.Transformations.associateWithTo */ @SinceKotlin("1.4") @kotlin.internal.InlineOnly public inline fun > LongArray.associateWithTo(destination: M, valueSelector: (Long) -> V): M { for (element in this) { destination.put(element, valueSelector(element)) } return destination } /** * Populates and returns the [destination] mutable map with key-value pairs for each element of the given array, * where key is the element itself and value is provided by the [valueSelector] function applied to that key. * * If any two elements are equal, the last one overwrites the former value in the map. * * @sample samples.collections.Collections.Transformations.associateWithTo */ @SinceKotlin("1.4") @kotlin.internal.InlineOnly public inline fun > FloatArray.associateWithTo(destination: M, valueSelector: (Float) -> V): M { for (element in this) { destination.put(element, valueSelector(element)) } return destination } /** * Populates and returns the [destination] mutable map with key-value pairs for each element of the given array, * where key is the element itself and value is provided by the [valueSelector] function applied to that key. * * If any two elements are equal, the last one overwrites the former value in the map. * * @sample samples.collections.Collections.Transformations.associateWithTo */ @SinceKotlin("1.4") @kotlin.internal.InlineOnly public inline fun > DoubleArray.associateWithTo(destination: M, valueSelector: (Double) -> V): M { for (element in this) { destination.put(element, valueSelector(element)) } return destination } /** * Populates and returns the [destination] mutable map with key-value pairs for each element of the given array, * where key is the element itself and value is provided by the [valueSelector] function applied to that key. * * If any two elements are equal, the last one overwrites the former value in the map. * * @sample samples.collections.Collections.Transformations.associateWithTo */ @SinceKotlin("1.4") @kotlin.internal.InlineOnly public inline fun > BooleanArray.associateWithTo(destination: M, valueSelector: (Boolean) -> V): M { for (element in this) { destination.put(element, valueSelector(element)) } return destination } /** * Populates and returns the [destination] mutable map with key-value pairs for each element of the given array, * where key is the element itself and value is provided by the [valueSelector] function applied to that key. * * If any two elements are equal, the last one overwrites the former value in the map. * * @sample samples.collections.Collections.Transformations.associateWithTo */ @SinceKotlin("1.4") @kotlin.internal.InlineOnly public inline fun > CharArray.associateWithTo(destination: M, valueSelector: (Char) -> V): M { for (element in this) { destination.put(element, valueSelector(element)) } return destination } /** * Appends all elements to the given [destination] collection. */ public fun > Array.toCollection(destination: C): C { for (item in this) { destination.add(item) } return destination } /** * Appends all elements to the given [destination] collection. */ public fun > ByteArray.toCollection(destination: C): C { for (item in this) { destination.add(item) } return destination } /** * Appends all elements to the given [destination] collection. */ public fun > ShortArray.toCollection(destination: C): C { for (item in this) { destination.add(item) } return destination } /** * Appends all elements to the given [destination] collection. */ public fun > IntArray.toCollection(destination: C): C { for (item in this) { destination.add(item) } return destination } /** * Appends all elements to the given [destination] collection. */ public fun > LongArray.toCollection(destination: C): C { for (item in this) { destination.add(item) } return destination } /** * Appends all elements to the given [destination] collection. */ public fun > FloatArray.toCollection(destination: C): C { for (item in this) { destination.add(item) } return destination } /** * Appends all elements to the given [destination] collection. */ public fun > DoubleArray.toCollection(destination: C): C { for (item in this) { destination.add(item) } return destination } /** * Appends all elements to the given [destination] collection. */ public fun > BooleanArray.toCollection(destination: C): C { for (item in this) { destination.add(item) } return destination } /** * Appends all elements to the given [destination] collection. */ public fun > CharArray.toCollection(destination: C): C { for (item in this) { destination.add(item) } return destination } /** * Returns a new [HashSet] of all elements. */ public fun Array.toHashSet(): HashSet { return toCollection(HashSet(mapCapacity(size))) } /** * Returns a new [HashSet] of all elements. */ public fun ByteArray.toHashSet(): HashSet { return toCollection(HashSet(mapCapacity(size))) } /** * Returns a new [HashSet] of all elements. */ public fun ShortArray.toHashSet(): HashSet { return toCollection(HashSet(mapCapacity(size))) } /** * Returns a new [HashSet] of all elements. */ public fun IntArray.toHashSet(): HashSet { return toCollection(HashSet(mapCapacity(size))) } /** * Returns a new [HashSet] of all elements. */ public fun LongArray.toHashSet(): HashSet { return toCollection(HashSet(mapCapacity(size))) } /** * Returns a new [HashSet] of all elements. */ public fun FloatArray.toHashSet(): HashSet { return toCollection(HashSet(mapCapacity(size))) } /** * Returns a new [HashSet] of all elements. */ public fun DoubleArray.toHashSet(): HashSet { return toCollection(HashSet(mapCapacity(size))) } /** * Returns a new [HashSet] of all elements. */ public fun BooleanArray.toHashSet(): HashSet { return toCollection(HashSet(mapCapacity(size))) } /** * Returns a new [HashSet] of all elements. */ public fun CharArray.toHashSet(): HashSet { return toCollection(HashSet(mapCapacity(size.coerceAtMost(128)))) } /** * Returns a [List] containing all elements. */ public fun Array.toList(): List { return when (size) { 0 -> emptyList() 1 -> listOf(this[0]) else -> this.toMutableList() } } /** * Returns a [List] containing all elements. */ public fun ByteArray.toList(): List { return when (size) { 0 -> emptyList() 1 -> listOf(this[0]) else -> this.toMutableList() } } /** * Returns a [List] containing all elements. */ public fun ShortArray.toList(): List { return when (size) { 0 -> emptyList() 1 -> listOf(this[0]) else -> this.toMutableList() } } /** * Returns a [List] containing all elements. */ public fun IntArray.toList(): List { return when (size) { 0 -> emptyList() 1 -> listOf(this[0]) else -> this.toMutableList() } } /** * Returns a [List] containing all elements. */ public fun LongArray.toList(): List { return when (size) { 0 -> emptyList() 1 -> listOf(this[0]) else -> this.toMutableList() } } /** * Returns a [List] containing all elements. */ public fun FloatArray.toList(): List { return when (size) { 0 -> emptyList() 1 -> listOf(this[0]) else -> this.toMutableList() } } /** * Returns a [List] containing all elements. */ public fun DoubleArray.toList(): List { return when (size) { 0 -> emptyList() 1 -> listOf(this[0]) else -> this.toMutableList() } } /** * Returns a [List] containing all elements. */ public fun BooleanArray.toList(): List { return when (size) { 0 -> emptyList() 1 -> listOf(this[0]) else -> this.toMutableList() } } /** * Returns a [List] containing all elements. */ public fun CharArray.toList(): List { return when (size) { 0 -> emptyList() 1 -> listOf(this[0]) else -> this.toMutableList() } } /** * Returns a new [MutableList] filled with all elements of this array. */ public fun Array.toMutableList(): MutableList { return ArrayList(this.asCollection()) } /** * Returns a new [MutableList] filled with all elements of this array. */ public fun ByteArray.toMutableList(): MutableList { val list = ArrayList(size) for (item in this) list.add(item) return list } /** * Returns a new [MutableList] filled with all elements of this array. */ public fun ShortArray.toMutableList(): MutableList { val list = ArrayList(size) for (item in this) list.add(item) return list } /** * Returns a new [MutableList] filled with all elements of this array. */ public fun IntArray.toMutableList(): MutableList { val list = ArrayList(size) for (item in this) list.add(item) return list } /** * Returns a new [MutableList] filled with all elements of this array. */ public fun LongArray.toMutableList(): MutableList { val list = ArrayList(size) for (item in this) list.add(item) return list } /** * Returns a new [MutableList] filled with all elements of this array. */ public fun FloatArray.toMutableList(): MutableList { val list = ArrayList(size) for (item in this) list.add(item) return list } /** * Returns a new [MutableList] filled with all elements of this array. */ public fun DoubleArray.toMutableList(): MutableList { val list = ArrayList(size) for (item in this) list.add(item) return list } /** * Returns a new [MutableList] filled with all elements of this array. */ public fun BooleanArray.toMutableList(): MutableList { val list = ArrayList(size) for (item in this) list.add(item) return list } /** * Returns a new [MutableList] filled with all elements of this array. */ public fun CharArray.toMutableList(): MutableList { val list = ArrayList(size) for (item in this) list.add(item) return list } /** * Returns a [Set] of all elements. * * The returned set preserves the element iteration order of the original array. */ public fun Array.toSet(): Set { return when (size) { 0 -> emptySet() 1 -> setOf(this[0]) else -> toCollection(LinkedHashSet(mapCapacity(size))) } } /** * Returns a [Set] of all elements. * * The returned set preserves the element iteration order of the original array. */ public fun ByteArray.toSet(): Set { return when (size) { 0 -> emptySet() 1 -> setOf(this[0]) else -> toCollection(LinkedHashSet(mapCapacity(size))) } } /** * Returns a [Set] of all elements. * * The returned set preserves the element iteration order of the original array. */ public fun ShortArray.toSet(): Set { return when (size) { 0 -> emptySet() 1 -> setOf(this[0]) else -> toCollection(LinkedHashSet(mapCapacity(size))) } } /** * Returns a [Set] of all elements. * * The returned set preserves the element iteration order of the original array. */ public fun IntArray.toSet(): Set { return when (size) { 0 -> emptySet() 1 -> setOf(this[0]) else -> toCollection(LinkedHashSet(mapCapacity(size))) } } /** * Returns a [Set] of all elements. * * The returned set preserves the element iteration order of the original array. */ public fun LongArray.toSet(): Set { return when (size) { 0 -> emptySet() 1 -> setOf(this[0]) else -> toCollection(LinkedHashSet(mapCapacity(size))) } } /** * Returns a [Set] of all elements. * * The returned set preserves the element iteration order of the original array. */ public fun FloatArray.toSet(): Set { return when (size) { 0 -> emptySet() 1 -> setOf(this[0]) else -> toCollection(LinkedHashSet(mapCapacity(size))) } } /** * Returns a [Set] of all elements. * * The returned set preserves the element iteration order of the original array. */ public fun DoubleArray.toSet(): Set { return when (size) { 0 -> emptySet() 1 -> setOf(this[0]) else -> toCollection(LinkedHashSet(mapCapacity(size))) } } /** * Returns a [Set] of all elements. * * The returned set preserves the element iteration order of the original array. */ public fun BooleanArray.toSet(): Set { return when (size) { 0 -> emptySet() 1 -> setOf(this[0]) else -> toCollection(LinkedHashSet(mapCapacity(size))) } } /** * Returns a [Set] of all elements. * * The returned set preserves the element iteration order of the original array. */ public fun CharArray.toSet(): Set { return when (size) { 0 -> emptySet() 1 -> setOf(this[0]) else -> toCollection(LinkedHashSet(mapCapacity(size.coerceAtMost(128)))) } } /** * Returns a single list of all elements yielded from results of [transform] function being invoked on each element of original array. * * @sample samples.collections.Collections.Transformations.flatMap */ public inline fun Array.flatMap(transform: (T) -> Iterable): List { return flatMapTo(ArrayList(), transform) } /** * Returns a single list of all elements yielded from results of [transform] function being invoked on each element of original array. * * @sample samples.collections.Collections.Transformations.flatMap */ public inline fun ByteArray.flatMap(transform: (Byte) -> Iterable): List { return flatMapTo(ArrayList(), transform) } /** * Returns a single list of all elements yielded from results of [transform] function being invoked on each element of original array. * * @sample samples.collections.Collections.Transformations.flatMap */ public inline fun ShortArray.flatMap(transform: (Short) -> Iterable): List { return flatMapTo(ArrayList(), transform) } /** * Returns a single list of all elements yielded from results of [transform] function being invoked on each element of original array. * * @sample samples.collections.Collections.Transformations.flatMap */ public inline fun IntArray.flatMap(transform: (Int) -> Iterable): List { return flatMapTo(ArrayList(), transform) } /** * Returns a single list of all elements yielded from results of [transform] function being invoked on each element of original array. * * @sample samples.collections.Collections.Transformations.flatMap */ public inline fun LongArray.flatMap(transform: (Long) -> Iterable): List { return flatMapTo(ArrayList(), transform) } /** * Returns a single list of all elements yielded from results of [transform] function being invoked on each element of original array. * * @sample samples.collections.Collections.Transformations.flatMap */ public inline fun FloatArray.flatMap(transform: (Float) -> Iterable): List { return flatMapTo(ArrayList(), transform) } /** * Returns a single list of all elements yielded from results of [transform] function being invoked on each element of original array. * * @sample samples.collections.Collections.Transformations.flatMap */ public inline fun DoubleArray.flatMap(transform: (Double) -> Iterable): List { return flatMapTo(ArrayList(), transform) } /** * Returns a single list of all elements yielded from results of [transform] function being invoked on each element of original array. * * @sample samples.collections.Collections.Transformations.flatMap */ public inline fun BooleanArray.flatMap(transform: (Boolean) -> Iterable): List { return flatMapTo(ArrayList(), transform) } /** * Returns a single list of all elements yielded from results of [transform] function being invoked on each element of original array. * * @sample samples.collections.Collections.Transformations.flatMap */ public inline fun CharArray.flatMap(transform: (Char) -> Iterable): List { return flatMapTo(ArrayList(), transform) } /** * Returns a single list of all elements yielded from results of [transform] function being invoked on each element of original array. * * @sample samples.collections.Collections.Transformations.flatMap */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.jvm.JvmName("flatMapSequence") public inline fun Array.flatMap(transform: (T) -> Sequence): List { return flatMapTo(ArrayList(), transform) } /** * Returns a single list of all elements yielded from results of [transform] function being invoked on each element * and its index in the original array. * * @sample samples.collections.Collections.Transformations.flatMapIndexed */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.jvm.JvmName("flatMapIndexedIterable") @kotlin.internal.InlineOnly public inline fun Array.flatMapIndexed(transform: (index: Int, T) -> Iterable): List { return flatMapIndexedTo(ArrayList(), transform) } /** * Returns a single list of all elements yielded from results of [transform] function being invoked on each element * and its index in the original array. * * @sample samples.collections.Collections.Transformations.flatMapIndexed */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.jvm.JvmName("flatMapIndexedIterable") @kotlin.internal.InlineOnly public inline fun ByteArray.flatMapIndexed(transform: (index: Int, Byte) -> Iterable): List { return flatMapIndexedTo(ArrayList(), transform) } /** * Returns a single list of all elements yielded from results of [transform] function being invoked on each element * and its index in the original array. * * @sample samples.collections.Collections.Transformations.flatMapIndexed */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.jvm.JvmName("flatMapIndexedIterable") @kotlin.internal.InlineOnly public inline fun ShortArray.flatMapIndexed(transform: (index: Int, Short) -> Iterable): List { return flatMapIndexedTo(ArrayList(), transform) } /** * Returns a single list of all elements yielded from results of [transform] function being invoked on each element * and its index in the original array. * * @sample samples.collections.Collections.Transformations.flatMapIndexed */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.jvm.JvmName("flatMapIndexedIterable") @kotlin.internal.InlineOnly public inline fun IntArray.flatMapIndexed(transform: (index: Int, Int) -> Iterable): List { return flatMapIndexedTo(ArrayList(), transform) } /** * Returns a single list of all elements yielded from results of [transform] function being invoked on each element * and its index in the original array. * * @sample samples.collections.Collections.Transformations.flatMapIndexed */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.jvm.JvmName("flatMapIndexedIterable") @kotlin.internal.InlineOnly public inline fun LongArray.flatMapIndexed(transform: (index: Int, Long) -> Iterable): List { return flatMapIndexedTo(ArrayList(), transform) } /** * Returns a single list of all elements yielded from results of [transform] function being invoked on each element * and its index in the original array. * * @sample samples.collections.Collections.Transformations.flatMapIndexed */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.jvm.JvmName("flatMapIndexedIterable") @kotlin.internal.InlineOnly public inline fun FloatArray.flatMapIndexed(transform: (index: Int, Float) -> Iterable): List { return flatMapIndexedTo(ArrayList(), transform) } /** * Returns a single list of all elements yielded from results of [transform] function being invoked on each element * and its index in the original array. * * @sample samples.collections.Collections.Transformations.flatMapIndexed */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.jvm.JvmName("flatMapIndexedIterable") @kotlin.internal.InlineOnly public inline fun DoubleArray.flatMapIndexed(transform: (index: Int, Double) -> Iterable): List { return flatMapIndexedTo(ArrayList(), transform) } /** * Returns a single list of all elements yielded from results of [transform] function being invoked on each element * and its index in the original array. * * @sample samples.collections.Collections.Transformations.flatMapIndexed */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.jvm.JvmName("flatMapIndexedIterable") @kotlin.internal.InlineOnly public inline fun BooleanArray.flatMapIndexed(transform: (index: Int, Boolean) -> Iterable): List { return flatMapIndexedTo(ArrayList(), transform) } /** * Returns a single list of all elements yielded from results of [transform] function being invoked on each element * and its index in the original array. * * @sample samples.collections.Collections.Transformations.flatMapIndexed */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.jvm.JvmName("flatMapIndexedIterable") @kotlin.internal.InlineOnly public inline fun CharArray.flatMapIndexed(transform: (index: Int, Char) -> Iterable): List { return flatMapIndexedTo(ArrayList(), transform) } /** * Returns a single list of all elements yielded from results of [transform] function being invoked on each element * and its index in the original array. * * @sample samples.collections.Collections.Transformations.flatMapIndexed */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.jvm.JvmName("flatMapIndexedSequence") @kotlin.internal.InlineOnly public inline fun Array.flatMapIndexed(transform: (index: Int, T) -> Sequence): List { return flatMapIndexedTo(ArrayList(), transform) } /** * Appends all elements yielded from results of [transform] function being invoked on each element * and its index in the original array, to the given [destination]. */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.jvm.JvmName("flatMapIndexedIterableTo") @kotlin.internal.InlineOnly public inline fun > Array.flatMapIndexedTo(destination: C, transform: (index: Int, T) -> Iterable): C { var index = 0 for (element in this) { val list = transform(index++, element) destination.addAll(list) } return destination } /** * Appends all elements yielded from results of [transform] function being invoked on each element * and its index in the original array, to the given [destination]. */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.jvm.JvmName("flatMapIndexedIterableTo") @kotlin.internal.InlineOnly public inline fun > ByteArray.flatMapIndexedTo(destination: C, transform: (index: Int, Byte) -> Iterable): C { var index = 0 for (element in this) { val list = transform(index++, element) destination.addAll(list) } return destination } /** * Appends all elements yielded from results of [transform] function being invoked on each element * and its index in the original array, to the given [destination]. */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.jvm.JvmName("flatMapIndexedIterableTo") @kotlin.internal.InlineOnly public inline fun > ShortArray.flatMapIndexedTo(destination: C, transform: (index: Int, Short) -> Iterable): C { var index = 0 for (element in this) { val list = transform(index++, element) destination.addAll(list) } return destination } /** * Appends all elements yielded from results of [transform] function being invoked on each element * and its index in the original array, to the given [destination]. */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.jvm.JvmName("flatMapIndexedIterableTo") @kotlin.internal.InlineOnly public inline fun > IntArray.flatMapIndexedTo(destination: C, transform: (index: Int, Int) -> Iterable): C { var index = 0 for (element in this) { val list = transform(index++, element) destination.addAll(list) } return destination } /** * Appends all elements yielded from results of [transform] function being invoked on each element * and its index in the original array, to the given [destination]. */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.jvm.JvmName("flatMapIndexedIterableTo") @kotlin.internal.InlineOnly public inline fun > LongArray.flatMapIndexedTo(destination: C, transform: (index: Int, Long) -> Iterable): C { var index = 0 for (element in this) { val list = transform(index++, element) destination.addAll(list) } return destination } /** * Appends all elements yielded from results of [transform] function being invoked on each element * and its index in the original array, to the given [destination]. */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.jvm.JvmName("flatMapIndexedIterableTo") @kotlin.internal.InlineOnly public inline fun > FloatArray.flatMapIndexedTo(destination: C, transform: (index: Int, Float) -> Iterable): C { var index = 0 for (element in this) { val list = transform(index++, element) destination.addAll(list) } return destination } /** * Appends all elements yielded from results of [transform] function being invoked on each element * and its index in the original array, to the given [destination]. */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.jvm.JvmName("flatMapIndexedIterableTo") @kotlin.internal.InlineOnly public inline fun > DoubleArray.flatMapIndexedTo(destination: C, transform: (index: Int, Double) -> Iterable): C { var index = 0 for (element in this) { val list = transform(index++, element) destination.addAll(list) } return destination } /** * Appends all elements yielded from results of [transform] function being invoked on each element * and its index in the original array, to the given [destination]. */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.jvm.JvmName("flatMapIndexedIterableTo") @kotlin.internal.InlineOnly public inline fun > BooleanArray.flatMapIndexedTo(destination: C, transform: (index: Int, Boolean) -> Iterable): C { var index = 0 for (element in this) { val list = transform(index++, element) destination.addAll(list) } return destination } /** * Appends all elements yielded from results of [transform] function being invoked on each element * and its index in the original array, to the given [destination]. */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.jvm.JvmName("flatMapIndexedIterableTo") @kotlin.internal.InlineOnly public inline fun > CharArray.flatMapIndexedTo(destination: C, transform: (index: Int, Char) -> Iterable): C { var index = 0 for (element in this) { val list = transform(index++, element) destination.addAll(list) } return destination } /** * Appends all elements yielded from results of [transform] function being invoked on each element * and its index in the original array, to the given [destination]. */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.jvm.JvmName("flatMapIndexedSequenceTo") @kotlin.internal.InlineOnly public inline fun > Array.flatMapIndexedTo(destination: C, transform: (index: Int, T) -> Sequence): C { var index = 0 for (element in this) { val list = transform(index++, element) destination.addAll(list) } return destination } /** * Appends all elements yielded from results of [transform] function being invoked on each element of original array, to the given [destination]. */ public inline fun > Array.flatMapTo(destination: C, transform: (T) -> Iterable): C { for (element in this) { val list = transform(element) destination.addAll(list) } return destination } /** * Appends all elements yielded from results of [transform] function being invoked on each element of original array, to the given [destination]. */ public inline fun > ByteArray.flatMapTo(destination: C, transform: (Byte) -> Iterable): C { for (element in this) { val list = transform(element) destination.addAll(list) } return destination } /** * Appends all elements yielded from results of [transform] function being invoked on each element of original array, to the given [destination]. */ public inline fun > ShortArray.flatMapTo(destination: C, transform: (Short) -> Iterable): C { for (element in this) { val list = transform(element) destination.addAll(list) } return destination } /** * Appends all elements yielded from results of [transform] function being invoked on each element of original array, to the given [destination]. */ public inline fun > IntArray.flatMapTo(destination: C, transform: (Int) -> Iterable): C { for (element in this) { val list = transform(element) destination.addAll(list) } return destination } /** * Appends all elements yielded from results of [transform] function being invoked on each element of original array, to the given [destination]. */ public inline fun > LongArray.flatMapTo(destination: C, transform: (Long) -> Iterable): C { for (element in this) { val list = transform(element) destination.addAll(list) } return destination } /** * Appends all elements yielded from results of [transform] function being invoked on each element of original array, to the given [destination]. */ public inline fun > FloatArray.flatMapTo(destination: C, transform: (Float) -> Iterable): C { for (element in this) { val list = transform(element) destination.addAll(list) } return destination } /** * Appends all elements yielded from results of [transform] function being invoked on each element of original array, to the given [destination]. */ public inline fun > DoubleArray.flatMapTo(destination: C, transform: (Double) -> Iterable): C { for (element in this) { val list = transform(element) destination.addAll(list) } return destination } /** * Appends all elements yielded from results of [transform] function being invoked on each element of original array, to the given [destination]. */ public inline fun > BooleanArray.flatMapTo(destination: C, transform: (Boolean) -> Iterable): C { for (element in this) { val list = transform(element) destination.addAll(list) } return destination } /** * Appends all elements yielded from results of [transform] function being invoked on each element of original array, to the given [destination]. */ public inline fun > CharArray.flatMapTo(destination: C, transform: (Char) -> Iterable): C { for (element in this) { val list = transform(element) destination.addAll(list) } return destination } /** * Appends all elements yielded from results of [transform] function being invoked on each element of original array, to the given [destination]. */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.jvm.JvmName("flatMapSequenceTo") public inline fun > Array.flatMapTo(destination: C, transform: (T) -> Sequence): C { for (element in this) { val list = transform(element) destination.addAll(list) } return destination } /** * Groups elements of the original array by the key returned by the given [keySelector] function * applied to each element and returns a map where each group key is associated with a list of corresponding elements. * * The returned map preserves the entry iteration order of the keys produced from the original array. * * @sample samples.collections.Collections.Transformations.groupBy */ public inline fun Array.groupBy(keySelector: (T) -> K): Map> { return groupByTo(LinkedHashMap>(), keySelector) } /** * Groups elements of the original array by the key returned by the given [keySelector] function * applied to each element and returns a map where each group key is associated with a list of corresponding elements. * * The returned map preserves the entry iteration order of the keys produced from the original array. * * @sample samples.collections.Collections.Transformations.groupBy */ public inline fun ByteArray.groupBy(keySelector: (Byte) -> K): Map> { return groupByTo(LinkedHashMap>(), keySelector) } /** * Groups elements of the original array by the key returned by the given [keySelector] function * applied to each element and returns a map where each group key is associated with a list of corresponding elements. * * The returned map preserves the entry iteration order of the keys produced from the original array. * * @sample samples.collections.Collections.Transformations.groupBy */ public inline fun ShortArray.groupBy(keySelector: (Short) -> K): Map> { return groupByTo(LinkedHashMap>(), keySelector) } /** * Groups elements of the original array by the key returned by the given [keySelector] function * applied to each element and returns a map where each group key is associated with a list of corresponding elements. * * The returned map preserves the entry iteration order of the keys produced from the original array. * * @sample samples.collections.Collections.Transformations.groupBy */ public inline fun IntArray.groupBy(keySelector: (Int) -> K): Map> { return groupByTo(LinkedHashMap>(), keySelector) } /** * Groups elements of the original array by the key returned by the given [keySelector] function * applied to each element and returns a map where each group key is associated with a list of corresponding elements. * * The returned map preserves the entry iteration order of the keys produced from the original array. * * @sample samples.collections.Collections.Transformations.groupBy */ public inline fun LongArray.groupBy(keySelector: (Long) -> K): Map> { return groupByTo(LinkedHashMap>(), keySelector) } /** * Groups elements of the original array by the key returned by the given [keySelector] function * applied to each element and returns a map where each group key is associated with a list of corresponding elements. * * The returned map preserves the entry iteration order of the keys produced from the original array. * * @sample samples.collections.Collections.Transformations.groupBy */ public inline fun FloatArray.groupBy(keySelector: (Float) -> K): Map> { return groupByTo(LinkedHashMap>(), keySelector) } /** * Groups elements of the original array by the key returned by the given [keySelector] function * applied to each element and returns a map where each group key is associated with a list of corresponding elements. * * The returned map preserves the entry iteration order of the keys produced from the original array. * * @sample samples.collections.Collections.Transformations.groupBy */ public inline fun DoubleArray.groupBy(keySelector: (Double) -> K): Map> { return groupByTo(LinkedHashMap>(), keySelector) } /** * Groups elements of the original array by the key returned by the given [keySelector] function * applied to each element and returns a map where each group key is associated with a list of corresponding elements. * * The returned map preserves the entry iteration order of the keys produced from the original array. * * @sample samples.collections.Collections.Transformations.groupBy */ public inline fun BooleanArray.groupBy(keySelector: (Boolean) -> K): Map> { return groupByTo(LinkedHashMap>(), keySelector) } /** * Groups elements of the original array by the key returned by the given [keySelector] function * applied to each element and returns a map where each group key is associated with a list of corresponding elements. * * The returned map preserves the entry iteration order of the keys produced from the original array. * * @sample samples.collections.Collections.Transformations.groupBy */ public inline fun CharArray.groupBy(keySelector: (Char) -> K): Map> { return groupByTo(LinkedHashMap>(), keySelector) } /** * Groups values returned by the [valueTransform] function applied to each element of the original array * by the key returned by the given [keySelector] function applied to the element * and returns a map where each group key is associated with a list of corresponding values. * * The returned map preserves the entry iteration order of the keys produced from the original array. * * @sample samples.collections.Collections.Transformations.groupByKeysAndValues */ public inline fun Array.groupBy(keySelector: (T) -> K, valueTransform: (T) -> V): Map> { return groupByTo(LinkedHashMap>(), keySelector, valueTransform) } /** * Groups values returned by the [valueTransform] function applied to each element of the original array * by the key returned by the given [keySelector] function applied to the element * and returns a map where each group key is associated with a list of corresponding values. * * The returned map preserves the entry iteration order of the keys produced from the original array. * * @sample samples.collections.Collections.Transformations.groupByKeysAndValues */ public inline fun ByteArray.groupBy(keySelector: (Byte) -> K, valueTransform: (Byte) -> V): Map> { return groupByTo(LinkedHashMap>(), keySelector, valueTransform) } /** * Groups values returned by the [valueTransform] function applied to each element of the original array * by the key returned by the given [keySelector] function applied to the element * and returns a map where each group key is associated with a list of corresponding values. * * The returned map preserves the entry iteration order of the keys produced from the original array. * * @sample samples.collections.Collections.Transformations.groupByKeysAndValues */ public inline fun ShortArray.groupBy(keySelector: (Short) -> K, valueTransform: (Short) -> V): Map> { return groupByTo(LinkedHashMap>(), keySelector, valueTransform) } /** * Groups values returned by the [valueTransform] function applied to each element of the original array * by the key returned by the given [keySelector] function applied to the element * and returns a map where each group key is associated with a list of corresponding values. * * The returned map preserves the entry iteration order of the keys produced from the original array. * * @sample samples.collections.Collections.Transformations.groupByKeysAndValues */ public inline fun IntArray.groupBy(keySelector: (Int) -> K, valueTransform: (Int) -> V): Map> { return groupByTo(LinkedHashMap>(), keySelector, valueTransform) } /** * Groups values returned by the [valueTransform] function applied to each element of the original array * by the key returned by the given [keySelector] function applied to the element * and returns a map where each group key is associated with a list of corresponding values. * * The returned map preserves the entry iteration order of the keys produced from the original array. * * @sample samples.collections.Collections.Transformations.groupByKeysAndValues */ public inline fun LongArray.groupBy(keySelector: (Long) -> K, valueTransform: (Long) -> V): Map> { return groupByTo(LinkedHashMap>(), keySelector, valueTransform) } /** * Groups values returned by the [valueTransform] function applied to each element of the original array * by the key returned by the given [keySelector] function applied to the element * and returns a map where each group key is associated with a list of corresponding values. * * The returned map preserves the entry iteration order of the keys produced from the original array. * * @sample samples.collections.Collections.Transformations.groupByKeysAndValues */ public inline fun FloatArray.groupBy(keySelector: (Float) -> K, valueTransform: (Float) -> V): Map> { return groupByTo(LinkedHashMap>(), keySelector, valueTransform) } /** * Groups values returned by the [valueTransform] function applied to each element of the original array * by the key returned by the given [keySelector] function applied to the element * and returns a map where each group key is associated with a list of corresponding values. * * The returned map preserves the entry iteration order of the keys produced from the original array. * * @sample samples.collections.Collections.Transformations.groupByKeysAndValues */ public inline fun DoubleArray.groupBy(keySelector: (Double) -> K, valueTransform: (Double) -> V): Map> { return groupByTo(LinkedHashMap>(), keySelector, valueTransform) } /** * Groups values returned by the [valueTransform] function applied to each element of the original array * by the key returned by the given [keySelector] function applied to the element * and returns a map where each group key is associated with a list of corresponding values. * * The returned map preserves the entry iteration order of the keys produced from the original array. * * @sample samples.collections.Collections.Transformations.groupByKeysAndValues */ public inline fun BooleanArray.groupBy(keySelector: (Boolean) -> K, valueTransform: (Boolean) -> V): Map> { return groupByTo(LinkedHashMap>(), keySelector, valueTransform) } /** * Groups values returned by the [valueTransform] function applied to each element of the original array * by the key returned by the given [keySelector] function applied to the element * and returns a map where each group key is associated with a list of corresponding values. * * The returned map preserves the entry iteration order of the keys produced from the original array. * * @sample samples.collections.Collections.Transformations.groupByKeysAndValues */ public inline fun CharArray.groupBy(keySelector: (Char) -> K, valueTransform: (Char) -> V): Map> { return groupByTo(LinkedHashMap>(), keySelector, valueTransform) } /** * Groups elements of the original array by the key returned by the given [keySelector] function * applied to each element and puts to the [destination] map each group key associated with a list of corresponding elements. * * @return The [destination] map. * * @sample samples.collections.Collections.Transformations.groupBy */ public inline fun >> Array.groupByTo(destination: M, keySelector: (T) -> K): M { for (element in this) { val key = keySelector(element) val list = destination.getOrPut(key) { ArrayList() } list.add(element) } return destination } /** * Groups elements of the original array by the key returned by the given [keySelector] function * applied to each element and puts to the [destination] map each group key associated with a list of corresponding elements. * * @return The [destination] map. * * @sample samples.collections.Collections.Transformations.groupBy */ public inline fun >> ByteArray.groupByTo(destination: M, keySelector: (Byte) -> K): M { for (element in this) { val key = keySelector(element) val list = destination.getOrPut(key) { ArrayList() } list.add(element) } return destination } /** * Groups elements of the original array by the key returned by the given [keySelector] function * applied to each element and puts to the [destination] map each group key associated with a list of corresponding elements. * * @return The [destination] map. * * @sample samples.collections.Collections.Transformations.groupBy */ public inline fun >> ShortArray.groupByTo(destination: M, keySelector: (Short) -> K): M { for (element in this) { val key = keySelector(element) val list = destination.getOrPut(key) { ArrayList() } list.add(element) } return destination } /** * Groups elements of the original array by the key returned by the given [keySelector] function * applied to each element and puts to the [destination] map each group key associated with a list of corresponding elements. * * @return The [destination] map. * * @sample samples.collections.Collections.Transformations.groupBy */ public inline fun >> IntArray.groupByTo(destination: M, keySelector: (Int) -> K): M { for (element in this) { val key = keySelector(element) val list = destination.getOrPut(key) { ArrayList() } list.add(element) } return destination } /** * Groups elements of the original array by the key returned by the given [keySelector] function * applied to each element and puts to the [destination] map each group key associated with a list of corresponding elements. * * @return The [destination] map. * * @sample samples.collections.Collections.Transformations.groupBy */ public inline fun >> LongArray.groupByTo(destination: M, keySelector: (Long) -> K): M { for (element in this) { val key = keySelector(element) val list = destination.getOrPut(key) { ArrayList() } list.add(element) } return destination } /** * Groups elements of the original array by the key returned by the given [keySelector] function * applied to each element and puts to the [destination] map each group key associated with a list of corresponding elements. * * @return The [destination] map. * * @sample samples.collections.Collections.Transformations.groupBy */ public inline fun >> FloatArray.groupByTo(destination: M, keySelector: (Float) -> K): M { for (element in this) { val key = keySelector(element) val list = destination.getOrPut(key) { ArrayList() } list.add(element) } return destination } /** * Groups elements of the original array by the key returned by the given [keySelector] function * applied to each element and puts to the [destination] map each group key associated with a list of corresponding elements. * * @return The [destination] map. * * @sample samples.collections.Collections.Transformations.groupBy */ public inline fun >> DoubleArray.groupByTo(destination: M, keySelector: (Double) -> K): M { for (element in this) { val key = keySelector(element) val list = destination.getOrPut(key) { ArrayList() } list.add(element) } return destination } /** * Groups elements of the original array by the key returned by the given [keySelector] function * applied to each element and puts to the [destination] map each group key associated with a list of corresponding elements. * * @return The [destination] map. * * @sample samples.collections.Collections.Transformations.groupBy */ public inline fun >> BooleanArray.groupByTo(destination: M, keySelector: (Boolean) -> K): M { for (element in this) { val key = keySelector(element) val list = destination.getOrPut(key) { ArrayList() } list.add(element) } return destination } /** * Groups elements of the original array by the key returned by the given [keySelector] function * applied to each element and puts to the [destination] map each group key associated with a list of corresponding elements. * * @return The [destination] map. * * @sample samples.collections.Collections.Transformations.groupBy */ public inline fun >> CharArray.groupByTo(destination: M, keySelector: (Char) -> K): M { for (element in this) { val key = keySelector(element) val list = destination.getOrPut(key) { ArrayList() } list.add(element) } return destination } /** * Groups values returned by the [valueTransform] function applied to each element of the original array * by the key returned by the given [keySelector] function applied to the element * and puts to the [destination] map each group key associated with a list of corresponding values. * * @return The [destination] map. * * @sample samples.collections.Collections.Transformations.groupByKeysAndValues */ public inline fun >> Array.groupByTo(destination: M, keySelector: (T) -> K, valueTransform: (T) -> V): M { for (element in this) { val key = keySelector(element) val list = destination.getOrPut(key) { ArrayList() } list.add(valueTransform(element)) } return destination } /** * Groups values returned by the [valueTransform] function applied to each element of the original array * by the key returned by the given [keySelector] function applied to the element * and puts to the [destination] map each group key associated with a list of corresponding values. * * @return The [destination] map. * * @sample samples.collections.Collections.Transformations.groupByKeysAndValues */ public inline fun >> ByteArray.groupByTo(destination: M, keySelector: (Byte) -> K, valueTransform: (Byte) -> V): M { for (element in this) { val key = keySelector(element) val list = destination.getOrPut(key) { ArrayList() } list.add(valueTransform(element)) } return destination } /** * Groups values returned by the [valueTransform] function applied to each element of the original array * by the key returned by the given [keySelector] function applied to the element * and puts to the [destination] map each group key associated with a list of corresponding values. * * @return The [destination] map. * * @sample samples.collections.Collections.Transformations.groupByKeysAndValues */ public inline fun >> ShortArray.groupByTo(destination: M, keySelector: (Short) -> K, valueTransform: (Short) -> V): M { for (element in this) { val key = keySelector(element) val list = destination.getOrPut(key) { ArrayList() } list.add(valueTransform(element)) } return destination } /** * Groups values returned by the [valueTransform] function applied to each element of the original array * by the key returned by the given [keySelector] function applied to the element * and puts to the [destination] map each group key associated with a list of corresponding values. * * @return The [destination] map. * * @sample samples.collections.Collections.Transformations.groupByKeysAndValues */ public inline fun >> IntArray.groupByTo(destination: M, keySelector: (Int) -> K, valueTransform: (Int) -> V): M { for (element in this) { val key = keySelector(element) val list = destination.getOrPut(key) { ArrayList() } list.add(valueTransform(element)) } return destination } /** * Groups values returned by the [valueTransform] function applied to each element of the original array * by the key returned by the given [keySelector] function applied to the element * and puts to the [destination] map each group key associated with a list of corresponding values. * * @return The [destination] map. * * @sample samples.collections.Collections.Transformations.groupByKeysAndValues */ public inline fun >> LongArray.groupByTo(destination: M, keySelector: (Long) -> K, valueTransform: (Long) -> V): M { for (element in this) { val key = keySelector(element) val list = destination.getOrPut(key) { ArrayList() } list.add(valueTransform(element)) } return destination } /** * Groups values returned by the [valueTransform] function applied to each element of the original array * by the key returned by the given [keySelector] function applied to the element * and puts to the [destination] map each group key associated with a list of corresponding values. * * @return The [destination] map. * * @sample samples.collections.Collections.Transformations.groupByKeysAndValues */ public inline fun >> FloatArray.groupByTo(destination: M, keySelector: (Float) -> K, valueTransform: (Float) -> V): M { for (element in this) { val key = keySelector(element) val list = destination.getOrPut(key) { ArrayList() } list.add(valueTransform(element)) } return destination } /** * Groups values returned by the [valueTransform] function applied to each element of the original array * by the key returned by the given [keySelector] function applied to the element * and puts to the [destination] map each group key associated with a list of corresponding values. * * @return The [destination] map. * * @sample samples.collections.Collections.Transformations.groupByKeysAndValues */ public inline fun >> DoubleArray.groupByTo(destination: M, keySelector: (Double) -> K, valueTransform: (Double) -> V): M { for (element in this) { val key = keySelector(element) val list = destination.getOrPut(key) { ArrayList() } list.add(valueTransform(element)) } return destination } /** * Groups values returned by the [valueTransform] function applied to each element of the original array * by the key returned by the given [keySelector] function applied to the element * and puts to the [destination] map each group key associated with a list of corresponding values. * * @return The [destination] map. * * @sample samples.collections.Collections.Transformations.groupByKeysAndValues */ public inline fun >> BooleanArray.groupByTo(destination: M, keySelector: (Boolean) -> K, valueTransform: (Boolean) -> V): M { for (element in this) { val key = keySelector(element) val list = destination.getOrPut(key) { ArrayList() } list.add(valueTransform(element)) } return destination } /** * Groups values returned by the [valueTransform] function applied to each element of the original array * by the key returned by the given [keySelector] function applied to the element * and puts to the [destination] map each group key associated with a list of corresponding values. * * @return The [destination] map. * * @sample samples.collections.Collections.Transformations.groupByKeysAndValues */ public inline fun >> CharArray.groupByTo(destination: M, keySelector: (Char) -> K, valueTransform: (Char) -> V): M { for (element in this) { val key = keySelector(element) val list = destination.getOrPut(key) { ArrayList() } list.add(valueTransform(element)) } return destination } /** * Creates a [Grouping] source from an array to be used later with one of group-and-fold operations * using the specified [keySelector] function to extract a key from each element. * * @sample samples.collections.Grouping.groupingByEachCount */ @SinceKotlin("1.1") public inline fun Array.groupingBy(crossinline keySelector: (T) -> K): Grouping { return object : Grouping { override fun sourceIterator(): Iterator = this@groupingBy.iterator() override fun keyOf(element: T): K = keySelector(element) } } /** * Returns a list containing the results of applying the given [transform] function * to each element in the original array. * * @sample samples.collections.Collections.Transformations.map */ public inline fun Array.map(transform: (T) -> R): List { return mapTo(ArrayList(size), transform) } /** * Returns a list containing the results of applying the given [transform] function * to each element in the original array. * * @sample samples.collections.Collections.Transformations.map */ public inline fun ByteArray.map(transform: (Byte) -> R): List { return mapTo(ArrayList(size), transform) } /** * Returns a list containing the results of applying the given [transform] function * to each element in the original array. * * @sample samples.collections.Collections.Transformations.map */ public inline fun ShortArray.map(transform: (Short) -> R): List { return mapTo(ArrayList(size), transform) } /** * Returns a list containing the results of applying the given [transform] function * to each element in the original array. * * @sample samples.collections.Collections.Transformations.map */ public inline fun IntArray.map(transform: (Int) -> R): List { return mapTo(ArrayList(size), transform) } /** * Returns a list containing the results of applying the given [transform] function * to each element in the original array. * * @sample samples.collections.Collections.Transformations.map */ public inline fun LongArray.map(transform: (Long) -> R): List { return mapTo(ArrayList(size), transform) } /** * Returns a list containing the results of applying the given [transform] function * to each element in the original array. * * @sample samples.collections.Collections.Transformations.map */ public inline fun FloatArray.map(transform: (Float) -> R): List { return mapTo(ArrayList(size), transform) } /** * Returns a list containing the results of applying the given [transform] function * to each element in the original array. * * @sample samples.collections.Collections.Transformations.map */ public inline fun DoubleArray.map(transform: (Double) -> R): List { return mapTo(ArrayList(size), transform) } /** * Returns a list containing the results of applying the given [transform] function * to each element in the original array. * * @sample samples.collections.Collections.Transformations.map */ public inline fun BooleanArray.map(transform: (Boolean) -> R): List { return mapTo(ArrayList(size), transform) } /** * Returns a list containing the results of applying the given [transform] function * to each element in the original array. * * @sample samples.collections.Collections.Transformations.map */ public inline fun CharArray.map(transform: (Char) -> R): List { return mapTo(ArrayList(size), transform) } /** * Returns a list containing the results of applying the given [transform] function * to each element and its index in the original array. * @param [transform] function that takes the index of an element and the element itself * and returns the result of the transform applied to the element. */ public inline fun Array.mapIndexed(transform: (index: Int, T) -> R): List { return mapIndexedTo(ArrayList(size), transform) } /** * Returns a list containing the results of applying the given [transform] function * to each element and its index in the original array. * @param [transform] function that takes the index of an element and the element itself * and returns the result of the transform applied to the element. */ public inline fun ByteArray.mapIndexed(transform: (index: Int, Byte) -> R): List { return mapIndexedTo(ArrayList(size), transform) } /** * Returns a list containing the results of applying the given [transform] function * to each element and its index in the original array. * @param [transform] function that takes the index of an element and the element itself * and returns the result of the transform applied to the element. */ public inline fun ShortArray.mapIndexed(transform: (index: Int, Short) -> R): List { return mapIndexedTo(ArrayList(size), transform) } /** * Returns a list containing the results of applying the given [transform] function * to each element and its index in the original array. * @param [transform] function that takes the index of an element and the element itself * and returns the result of the transform applied to the element. */ public inline fun IntArray.mapIndexed(transform: (index: Int, Int) -> R): List { return mapIndexedTo(ArrayList(size), transform) } /** * Returns a list containing the results of applying the given [transform] function * to each element and its index in the original array. * @param [transform] function that takes the index of an element and the element itself * and returns the result of the transform applied to the element. */ public inline fun LongArray.mapIndexed(transform: (index: Int, Long) -> R): List { return mapIndexedTo(ArrayList(size), transform) } /** * Returns a list containing the results of applying the given [transform] function * to each element and its index in the original array. * @param [transform] function that takes the index of an element and the element itself * and returns the result of the transform applied to the element. */ public inline fun FloatArray.mapIndexed(transform: (index: Int, Float) -> R): List { return mapIndexedTo(ArrayList(size), transform) } /** * Returns a list containing the results of applying the given [transform] function * to each element and its index in the original array. * @param [transform] function that takes the index of an element and the element itself * and returns the result of the transform applied to the element. */ public inline fun DoubleArray.mapIndexed(transform: (index: Int, Double) -> R): List { return mapIndexedTo(ArrayList(size), transform) } /** * Returns a list containing the results of applying the given [transform] function * to each element and its index in the original array. * @param [transform] function that takes the index of an element and the element itself * and returns the result of the transform applied to the element. */ public inline fun BooleanArray.mapIndexed(transform: (index: Int, Boolean) -> R): List { return mapIndexedTo(ArrayList(size), transform) } /** * Returns a list containing the results of applying the given [transform] function * to each element and its index in the original array. * @param [transform] function that takes the index of an element and the element itself * and returns the result of the transform applied to the element. */ public inline fun CharArray.mapIndexed(transform: (index: Int, Char) -> R): List { return mapIndexedTo(ArrayList(size), transform) } /** * Returns a list containing only the non-null results of applying the given [transform] function * to each element and its index in the original array. * @param [transform] function that takes the index of an element and the element itself * and returns the result of the transform applied to the element. */ public inline fun Array.mapIndexedNotNull(transform: (index: Int, T) -> R?): List { return mapIndexedNotNullTo(ArrayList(), transform) } /** * Applies the given [transform] function to each element and its index in the original array * and appends only the non-null results to the given [destination]. * @param [transform] function that takes the index of an element and the element itself * and returns the result of the transform applied to the element. */ public inline fun > Array.mapIndexedNotNullTo(destination: C, transform: (index: Int, T) -> R?): C { forEachIndexed { index, element -> transform(index, element)?.let { destination.add(it) } } return destination } /** * Applies the given [transform] function to each element and its index in the original array * and appends the results to the given [destination]. * @param [transform] function that takes the index of an element and the element itself * and returns the result of the transform applied to the element. */ public inline fun > Array.mapIndexedTo(destination: C, transform: (index: Int, T) -> R): C { var index = 0 for (item in this) destination.add(transform(index++, item)) return destination } /** * Applies the given [transform] function to each element and its index in the original array * and appends the results to the given [destination]. * @param [transform] function that takes the index of an element and the element itself * and returns the result of the transform applied to the element. */ public inline fun > ByteArray.mapIndexedTo(destination: C, transform: (index: Int, Byte) -> R): C { var index = 0 for (item in this) destination.add(transform(index++, item)) return destination } /** * Applies the given [transform] function to each element and its index in the original array * and appends the results to the given [destination]. * @param [transform] function that takes the index of an element and the element itself * and returns the result of the transform applied to the element. */ public inline fun > ShortArray.mapIndexedTo(destination: C, transform: (index: Int, Short) -> R): C { var index = 0 for (item in this) destination.add(transform(index++, item)) return destination } /** * Applies the given [transform] function to each element and its index in the original array * and appends the results to the given [destination]. * @param [transform] function that takes the index of an element and the element itself * and returns the result of the transform applied to the element. */ public inline fun > IntArray.mapIndexedTo(destination: C, transform: (index: Int, Int) -> R): C { var index = 0 for (item in this) destination.add(transform(index++, item)) return destination } /** * Applies the given [transform] function to each element and its index in the original array * and appends the results to the given [destination]. * @param [transform] function that takes the index of an element and the element itself * and returns the result of the transform applied to the element. */ public inline fun > LongArray.mapIndexedTo(destination: C, transform: (index: Int, Long) -> R): C { var index = 0 for (item in this) destination.add(transform(index++, item)) return destination } /** * Applies the given [transform] function to each element and its index in the original array * and appends the results to the given [destination]. * @param [transform] function that takes the index of an element and the element itself * and returns the result of the transform applied to the element. */ public inline fun > FloatArray.mapIndexedTo(destination: C, transform: (index: Int, Float) -> R): C { var index = 0 for (item in this) destination.add(transform(index++, item)) return destination } /** * Applies the given [transform] function to each element and its index in the original array * and appends the results to the given [destination]. * @param [transform] function that takes the index of an element and the element itself * and returns the result of the transform applied to the element. */ public inline fun > DoubleArray.mapIndexedTo(destination: C, transform: (index: Int, Double) -> R): C { var index = 0 for (item in this) destination.add(transform(index++, item)) return destination } /** * Applies the given [transform] function to each element and its index in the original array * and appends the results to the given [destination]. * @param [transform] function that takes the index of an element and the element itself * and returns the result of the transform applied to the element. */ public inline fun > BooleanArray.mapIndexedTo(destination: C, transform: (index: Int, Boolean) -> R): C { var index = 0 for (item in this) destination.add(transform(index++, item)) return destination } /** * Applies the given [transform] function to each element and its index in the original array * and appends the results to the given [destination]. * @param [transform] function that takes the index of an element and the element itself * and returns the result of the transform applied to the element. */ public inline fun > CharArray.mapIndexedTo(destination: C, transform: (index: Int, Char) -> R): C { var index = 0 for (item in this) destination.add(transform(index++, item)) return destination } /** * Returns a list containing only the non-null results of applying the given [transform] function * to each element in the original array. * * @sample samples.collections.Collections.Transformations.mapNotNull */ public inline fun Array.mapNotNull(transform: (T) -> R?): List { return mapNotNullTo(ArrayList(), transform) } /** * Applies the given [transform] function to each element in the original array * and appends only the non-null results to the given [destination]. */ public inline fun > Array.mapNotNullTo(destination: C, transform: (T) -> R?): C { forEach { element -> transform(element)?.let { destination.add(it) } } return destination } /** * Applies the given [transform] function to each element of the original array * and appends the results to the given [destination]. */ public inline fun > Array.mapTo(destination: C, transform: (T) -> R): C { for (item in this) destination.add(transform(item)) return destination } /** * Applies the given [transform] function to each element of the original array * and appends the results to the given [destination]. */ public inline fun > ByteArray.mapTo(destination: C, transform: (Byte) -> R): C { for (item in this) destination.add(transform(item)) return destination } /** * Applies the given [transform] function to each element of the original array * and appends the results to the given [destination]. */ public inline fun > ShortArray.mapTo(destination: C, transform: (Short) -> R): C { for (item in this) destination.add(transform(item)) return destination } /** * Applies the given [transform] function to each element of the original array * and appends the results to the given [destination]. */ public inline fun > IntArray.mapTo(destination: C, transform: (Int) -> R): C { for (item in this) destination.add(transform(item)) return destination } /** * Applies the given [transform] function to each element of the original array * and appends the results to the given [destination]. */ public inline fun > LongArray.mapTo(destination: C, transform: (Long) -> R): C { for (item in this) destination.add(transform(item)) return destination } /** * Applies the given [transform] function to each element of the original array * and appends the results to the given [destination]. */ public inline fun > FloatArray.mapTo(destination: C, transform: (Float) -> R): C { for (item in this) destination.add(transform(item)) return destination } /** * Applies the given [transform] function to each element of the original array * and appends the results to the given [destination]. */ public inline fun > DoubleArray.mapTo(destination: C, transform: (Double) -> R): C { for (item in this) destination.add(transform(item)) return destination } /** * Applies the given [transform] function to each element of the original array * and appends the results to the given [destination]. */ public inline fun > BooleanArray.mapTo(destination: C, transform: (Boolean) -> R): C { for (item in this) destination.add(transform(item)) return destination } /** * Applies the given [transform] function to each element of the original array * and appends the results to the given [destination]. */ public inline fun > CharArray.mapTo(destination: C, transform: (Char) -> R): C { for (item in this) destination.add(transform(item)) return destination } /** * Returns a lazy [Iterable] that wraps each element of the original array * into an [IndexedValue] containing the index of that element and the element itself. */ public fun Array.withIndex(): Iterable> { return IndexingIterable { iterator() } } /** * Returns a lazy [Iterable] that wraps each element of the original array * into an [IndexedValue] containing the index of that element and the element itself. */ public fun ByteArray.withIndex(): Iterable> { return IndexingIterable { iterator() } } /** * Returns a lazy [Iterable] that wraps each element of the original array * into an [IndexedValue] containing the index of that element and the element itself. */ public fun ShortArray.withIndex(): Iterable> { return IndexingIterable { iterator() } } /** * Returns a lazy [Iterable] that wraps each element of the original array * into an [IndexedValue] containing the index of that element and the element itself. */ public fun IntArray.withIndex(): Iterable> { return IndexingIterable { iterator() } } /** * Returns a lazy [Iterable] that wraps each element of the original array * into an [IndexedValue] containing the index of that element and the element itself. */ public fun LongArray.withIndex(): Iterable> { return IndexingIterable { iterator() } } /** * Returns a lazy [Iterable] that wraps each element of the original array * into an [IndexedValue] containing the index of that element and the element itself. */ public fun FloatArray.withIndex(): Iterable> { return IndexingIterable { iterator() } } /** * Returns a lazy [Iterable] that wraps each element of the original array * into an [IndexedValue] containing the index of that element and the element itself. */ public fun DoubleArray.withIndex(): Iterable> { return IndexingIterable { iterator() } } /** * Returns a lazy [Iterable] that wraps each element of the original array * into an [IndexedValue] containing the index of that element and the element itself. */ public fun BooleanArray.withIndex(): Iterable> { return IndexingIterable { iterator() } } /** * Returns a lazy [Iterable] that wraps each element of the original array * into an [IndexedValue] containing the index of that element and the element itself. */ public fun CharArray.withIndex(): Iterable> { return IndexingIterable { iterator() } } /** * Returns a list containing only distinct elements from the given array. * * Among equal elements of the given array, only the first one will be present in the resulting list. * The elements in the resulting list are in the same order as they were in the source array. * * @sample samples.collections.Collections.Transformations.distinctAndDistinctBy */ public fun Array.distinct(): List { return this.toMutableSet().toList() } /** * Returns a list containing only distinct elements from the given array. * * The elements in the resulting list are in the same order as they were in the source array. * * @sample samples.collections.Collections.Transformations.distinctAndDistinctBy */ public fun ByteArray.distinct(): List { return this.toMutableSet().toList() } /** * Returns a list containing only distinct elements from the given array. * * The elements in the resulting list are in the same order as they were in the source array. * * @sample samples.collections.Collections.Transformations.distinctAndDistinctBy */ public fun ShortArray.distinct(): List { return this.toMutableSet().toList() } /** * Returns a list containing only distinct elements from the given array. * * The elements in the resulting list are in the same order as they were in the source array. * * @sample samples.collections.Collections.Transformations.distinctAndDistinctBy */ public fun IntArray.distinct(): List { return this.toMutableSet().toList() } /** * Returns a list containing only distinct elements from the given array. * * The elements in the resulting list are in the same order as they were in the source array. * * @sample samples.collections.Collections.Transformations.distinctAndDistinctBy */ public fun LongArray.distinct(): List { return this.toMutableSet().toList() } /** * Returns a list containing only distinct elements from the given array. * * The elements in the resulting list are in the same order as they were in the source array. * * @sample samples.collections.Collections.Transformations.distinctAndDistinctBy */ public fun FloatArray.distinct(): List { return this.toMutableSet().toList() } /** * Returns a list containing only distinct elements from the given array. * * The elements in the resulting list are in the same order as they were in the source array. * * @sample samples.collections.Collections.Transformations.distinctAndDistinctBy */ public fun DoubleArray.distinct(): List { return this.toMutableSet().toList() } /** * Returns a list containing only distinct elements from the given array. * * The elements in the resulting list are in the same order as they were in the source array. * * @sample samples.collections.Collections.Transformations.distinctAndDistinctBy */ public fun BooleanArray.distinct(): List { return this.toMutableSet().toList() } /** * Returns a list containing only distinct elements from the given array. * * The elements in the resulting list are in the same order as they were in the source array. * * @sample samples.collections.Collections.Transformations.distinctAndDistinctBy */ public fun CharArray.distinct(): List { return this.toMutableSet().toList() } /** * Returns a list containing only elements from the given array * having distinct keys returned by the given [selector] function. * * Among elements of the given array with equal keys, only the first one will be present in the resulting list. * The elements in the resulting list are in the same order as they were in the source array. * * @sample samples.collections.Collections.Transformations.distinctAndDistinctBy */ public inline fun Array.distinctBy(selector: (T) -> K): List { val set = HashSet() val list = ArrayList() for (e in this) { val key = selector(e) if (set.add(key)) list.add(e) } return list } /** * Returns a list containing only elements from the given array * having distinct keys returned by the given [selector] function. * * The elements in the resulting list are in the same order as they were in the source array. * * @sample samples.collections.Collections.Transformations.distinctAndDistinctBy */ public inline fun ByteArray.distinctBy(selector: (Byte) -> K): List { val set = HashSet() val list = ArrayList() for (e in this) { val key = selector(e) if (set.add(key)) list.add(e) } return list } /** * Returns a list containing only elements from the given array * having distinct keys returned by the given [selector] function. * * The elements in the resulting list are in the same order as they were in the source array. * * @sample samples.collections.Collections.Transformations.distinctAndDistinctBy */ public inline fun ShortArray.distinctBy(selector: (Short) -> K): List { val set = HashSet() val list = ArrayList() for (e in this) { val key = selector(e) if (set.add(key)) list.add(e) } return list } /** * Returns a list containing only elements from the given array * having distinct keys returned by the given [selector] function. * * The elements in the resulting list are in the same order as they were in the source array. * * @sample samples.collections.Collections.Transformations.distinctAndDistinctBy */ public inline fun IntArray.distinctBy(selector: (Int) -> K): List { val set = HashSet() val list = ArrayList() for (e in this) { val key = selector(e) if (set.add(key)) list.add(e) } return list } /** * Returns a list containing only elements from the given array * having distinct keys returned by the given [selector] function. * * The elements in the resulting list are in the same order as they were in the source array. * * @sample samples.collections.Collections.Transformations.distinctAndDistinctBy */ public inline fun LongArray.distinctBy(selector: (Long) -> K): List { val set = HashSet() val list = ArrayList() for (e in this) { val key = selector(e) if (set.add(key)) list.add(e) } return list } /** * Returns a list containing only elements from the given array * having distinct keys returned by the given [selector] function. * * The elements in the resulting list are in the same order as they were in the source array. * * @sample samples.collections.Collections.Transformations.distinctAndDistinctBy */ public inline fun FloatArray.distinctBy(selector: (Float) -> K): List { val set = HashSet() val list = ArrayList() for (e in this) { val key = selector(e) if (set.add(key)) list.add(e) } return list } /** * Returns a list containing only elements from the given array * having distinct keys returned by the given [selector] function. * * The elements in the resulting list are in the same order as they were in the source array. * * @sample samples.collections.Collections.Transformations.distinctAndDistinctBy */ public inline fun DoubleArray.distinctBy(selector: (Double) -> K): List { val set = HashSet() val list = ArrayList() for (e in this) { val key = selector(e) if (set.add(key)) list.add(e) } return list } /** * Returns a list containing only elements from the given array * having distinct keys returned by the given [selector] function. * * The elements in the resulting list are in the same order as they were in the source array. * * @sample samples.collections.Collections.Transformations.distinctAndDistinctBy */ public inline fun BooleanArray.distinctBy(selector: (Boolean) -> K): List { val set = HashSet() val list = ArrayList() for (e in this) { val key = selector(e) if (set.add(key)) list.add(e) } return list } /** * Returns a list containing only elements from the given array * having distinct keys returned by the given [selector] function. * * The elements in the resulting list are in the same order as they were in the source array. * * @sample samples.collections.Collections.Transformations.distinctAndDistinctBy */ public inline fun CharArray.distinctBy(selector: (Char) -> K): List { val set = HashSet() val list = ArrayList() for (e in this) { val key = selector(e) if (set.add(key)) list.add(e) } return list } /** * Returns a set containing all elements that are contained by both this array and the specified collection. * * The returned set preserves the element iteration order of the original array. * * To get a set containing all elements that are contained at least in one of these collections use [union]. */ public infix fun Array.intersect(other: Iterable): Set { val set = this.toMutableSet() set.retainAll(other) return set } /** * Returns a set containing all elements that are contained by both this array and the specified collection. * * The returned set preserves the element iteration order of the original array. * * To get a set containing all elements that are contained at least in one of these collections use [union]. */ public infix fun ByteArray.intersect(other: Iterable): Set { val set = this.toMutableSet() set.retainAll(other) return set } /** * Returns a set containing all elements that are contained by both this array and the specified collection. * * The returned set preserves the element iteration order of the original array. * * To get a set containing all elements that are contained at least in one of these collections use [union]. */ public infix fun ShortArray.intersect(other: Iterable): Set { val set = this.toMutableSet() set.retainAll(other) return set } /** * Returns a set containing all elements that are contained by both this array and the specified collection. * * The returned set preserves the element iteration order of the original array. * * To get a set containing all elements that are contained at least in one of these collections use [union]. */ public infix fun IntArray.intersect(other: Iterable): Set { val set = this.toMutableSet() set.retainAll(other) return set } /** * Returns a set containing all elements that are contained by both this array and the specified collection. * * The returned set preserves the element iteration order of the original array. * * To get a set containing all elements that are contained at least in one of these collections use [union]. */ public infix fun LongArray.intersect(other: Iterable): Set { val set = this.toMutableSet() set.retainAll(other) return set } /** * Returns a set containing all elements that are contained by both this array and the specified collection. * * The returned set preserves the element iteration order of the original array. * * To get a set containing all elements that are contained at least in one of these collections use [union]. */ public infix fun FloatArray.intersect(other: Iterable): Set { val set = this.toMutableSet() set.retainAll(other) return set } /** * Returns a set containing all elements that are contained by both this array and the specified collection. * * The returned set preserves the element iteration order of the original array. * * To get a set containing all elements that are contained at least in one of these collections use [union]. */ public infix fun DoubleArray.intersect(other: Iterable): Set { val set = this.toMutableSet() set.retainAll(other) return set } /** * Returns a set containing all elements that are contained by both this array and the specified collection. * * The returned set preserves the element iteration order of the original array. * * To get a set containing all elements that are contained at least in one of these collections use [union]. */ public infix fun BooleanArray.intersect(other: Iterable): Set { val set = this.toMutableSet() set.retainAll(other) return set } /** * Returns a set containing all elements that are contained by both this array and the specified collection. * * The returned set preserves the element iteration order of the original array. * * To get a set containing all elements that are contained at least in one of these collections use [union]. */ public infix fun CharArray.intersect(other: Iterable): Set { val set = this.toMutableSet() set.retainAll(other) return set } /** * Returns a set containing all elements that are contained by this array and not contained by the specified collection. * * The returned set preserves the element iteration order of the original array. */ public infix fun Array.subtract(other: Iterable): Set { val set = this.toMutableSet() set.removeAll(other) return set } /** * Returns a set containing all elements that are contained by this array and not contained by the specified collection. * * The returned set preserves the element iteration order of the original array. */ public infix fun ByteArray.subtract(other: Iterable): Set { val set = this.toMutableSet() set.removeAll(other) return set } /** * Returns a set containing all elements that are contained by this array and not contained by the specified collection. * * The returned set preserves the element iteration order of the original array. */ public infix fun ShortArray.subtract(other: Iterable): Set { val set = this.toMutableSet() set.removeAll(other) return set } /** * Returns a set containing all elements that are contained by this array and not contained by the specified collection. * * The returned set preserves the element iteration order of the original array. */ public infix fun IntArray.subtract(other: Iterable): Set { val set = this.toMutableSet() set.removeAll(other) return set } /** * Returns a set containing all elements that are contained by this array and not contained by the specified collection. * * The returned set preserves the element iteration order of the original array. */ public infix fun LongArray.subtract(other: Iterable): Set { val set = this.toMutableSet() set.removeAll(other) return set } /** * Returns a set containing all elements that are contained by this array and not contained by the specified collection. * * The returned set preserves the element iteration order of the original array. */ public infix fun FloatArray.subtract(other: Iterable): Set { val set = this.toMutableSet() set.removeAll(other) return set } /** * Returns a set containing all elements that are contained by this array and not contained by the specified collection. * * The returned set preserves the element iteration order of the original array. */ public infix fun DoubleArray.subtract(other: Iterable): Set { val set = this.toMutableSet() set.removeAll(other) return set } /** * Returns a set containing all elements that are contained by this array and not contained by the specified collection. * * The returned set preserves the element iteration order of the original array. */ public infix fun BooleanArray.subtract(other: Iterable): Set { val set = this.toMutableSet() set.removeAll(other) return set } /** * Returns a set containing all elements that are contained by this array and not contained by the specified collection. * * The returned set preserves the element iteration order of the original array. */ public infix fun CharArray.subtract(other: Iterable): Set { val set = this.toMutableSet() set.removeAll(other) return set } /** * Returns a new [MutableSet] containing all distinct elements from the given array. * * The returned set preserves the element iteration order of the original array. */ public fun Array.toMutableSet(): MutableSet { return toCollection(LinkedHashSet(mapCapacity(size))) } /** * Returns a new [MutableSet] containing all distinct elements from the given array. * * The returned set preserves the element iteration order of the original array. */ public fun ByteArray.toMutableSet(): MutableSet { return toCollection(LinkedHashSet(mapCapacity(size))) } /** * Returns a new [MutableSet] containing all distinct elements from the given array. * * The returned set preserves the element iteration order of the original array. */ public fun ShortArray.toMutableSet(): MutableSet { return toCollection(LinkedHashSet(mapCapacity(size))) } /** * Returns a new [MutableSet] containing all distinct elements from the given array. * * The returned set preserves the element iteration order of the original array. */ public fun IntArray.toMutableSet(): MutableSet { return toCollection(LinkedHashSet(mapCapacity(size))) } /** * Returns a new [MutableSet] containing all distinct elements from the given array. * * The returned set preserves the element iteration order of the original array. */ public fun LongArray.toMutableSet(): MutableSet { return toCollection(LinkedHashSet(mapCapacity(size))) } /** * Returns a new [MutableSet] containing all distinct elements from the given array. * * The returned set preserves the element iteration order of the original array. */ public fun FloatArray.toMutableSet(): MutableSet { return toCollection(LinkedHashSet(mapCapacity(size))) } /** * Returns a new [MutableSet] containing all distinct elements from the given array. * * The returned set preserves the element iteration order of the original array. */ public fun DoubleArray.toMutableSet(): MutableSet { return toCollection(LinkedHashSet(mapCapacity(size))) } /** * Returns a new [MutableSet] containing all distinct elements from the given array. * * The returned set preserves the element iteration order of the original array. */ public fun BooleanArray.toMutableSet(): MutableSet { return toCollection(LinkedHashSet(mapCapacity(size))) } /** * Returns a new [MutableSet] containing all distinct elements from the given array. * * The returned set preserves the element iteration order of the original array. */ public fun CharArray.toMutableSet(): MutableSet { return toCollection(LinkedHashSet(mapCapacity(size.coerceAtMost(128)))) } /** * Returns a set containing all distinct elements from both collections. * * The returned set preserves the element iteration order of the original array. * Those elements of the [other] collection that are unique are iterated in the end * in the order of the [other] collection. * * To get a set containing all elements that are contained in both collections use [intersect]. */ public infix fun Array.union(other: Iterable): Set { val set = this.toMutableSet() set.addAll(other) return set } /** * Returns a set containing all distinct elements from both collections. * * The returned set preserves the element iteration order of the original array. * Those elements of the [other] collection that are unique are iterated in the end * in the order of the [other] collection. * * To get a set containing all elements that are contained in both collections use [intersect]. */ public infix fun ByteArray.union(other: Iterable): Set { val set = this.toMutableSet() set.addAll(other) return set } /** * Returns a set containing all distinct elements from both collections. * * The returned set preserves the element iteration order of the original array. * Those elements of the [other] collection that are unique are iterated in the end * in the order of the [other] collection. * * To get a set containing all elements that are contained in both collections use [intersect]. */ public infix fun ShortArray.union(other: Iterable): Set { val set = this.toMutableSet() set.addAll(other) return set } /** * Returns a set containing all distinct elements from both collections. * * The returned set preserves the element iteration order of the original array. * Those elements of the [other] collection that are unique are iterated in the end * in the order of the [other] collection. * * To get a set containing all elements that are contained in both collections use [intersect]. */ public infix fun IntArray.union(other: Iterable): Set { val set = this.toMutableSet() set.addAll(other) return set } /** * Returns a set containing all distinct elements from both collections. * * The returned set preserves the element iteration order of the original array. * Those elements of the [other] collection that are unique are iterated in the end * in the order of the [other] collection. * * To get a set containing all elements that are contained in both collections use [intersect]. */ public infix fun LongArray.union(other: Iterable): Set { val set = this.toMutableSet() set.addAll(other) return set } /** * Returns a set containing all distinct elements from both collections. * * The returned set preserves the element iteration order of the original array. * Those elements of the [other] collection that are unique are iterated in the end * in the order of the [other] collection. * * To get a set containing all elements that are contained in both collections use [intersect]. */ public infix fun FloatArray.union(other: Iterable): Set { val set = this.toMutableSet() set.addAll(other) return set } /** * Returns a set containing all distinct elements from both collections. * * The returned set preserves the element iteration order of the original array. * Those elements of the [other] collection that are unique are iterated in the end * in the order of the [other] collection. * * To get a set containing all elements that are contained in both collections use [intersect]. */ public infix fun DoubleArray.union(other: Iterable): Set { val set = this.toMutableSet() set.addAll(other) return set } /** * Returns a set containing all distinct elements from both collections. * * The returned set preserves the element iteration order of the original array. * Those elements of the [other] collection that are unique are iterated in the end * in the order of the [other] collection. * * To get a set containing all elements that are contained in both collections use [intersect]. */ public infix fun BooleanArray.union(other: Iterable): Set { val set = this.toMutableSet() set.addAll(other) return set } /** * Returns a set containing all distinct elements from both collections. * * The returned set preserves the element iteration order of the original array. * Those elements of the [other] collection that are unique are iterated in the end * in the order of the [other] collection. * * To get a set containing all elements that are contained in both collections use [intersect]. */ public infix fun CharArray.union(other: Iterable): Set { val set = this.toMutableSet() set.addAll(other) return set } /** * Returns `true` if all elements match the given [predicate]. * * Note that if the array contains no elements, the function returns `true` * because there are no elements in it that _do not_ match the predicate. * See a more detailed explanation of this logic concept in ["Vacuous truth"](https://en.wikipedia.org/wiki/Vacuous_truth) article. * * @sample samples.collections.Collections.Aggregates.all */ public inline fun Array.all(predicate: (T) -> Boolean): Boolean { for (element in this) if (!predicate(element)) return false return true } /** * Returns `true` if all elements match the given [predicate]. * * Note that if the array contains no elements, the function returns `true` * because there are no elements in it that _do not_ match the predicate. * See a more detailed explanation of this logic concept in ["Vacuous truth"](https://en.wikipedia.org/wiki/Vacuous_truth) article. * * @sample samples.collections.Collections.Aggregates.all */ public inline fun ByteArray.all(predicate: (Byte) -> Boolean): Boolean { for (element in this) if (!predicate(element)) return false return true } /** * Returns `true` if all elements match the given [predicate]. * * Note that if the array contains no elements, the function returns `true` * because there are no elements in it that _do not_ match the predicate. * See a more detailed explanation of this logic concept in ["Vacuous truth"](https://en.wikipedia.org/wiki/Vacuous_truth) article. * * @sample samples.collections.Collections.Aggregates.all */ public inline fun ShortArray.all(predicate: (Short) -> Boolean): Boolean { for (element in this) if (!predicate(element)) return false return true } /** * Returns `true` if all elements match the given [predicate]. * * Note that if the array contains no elements, the function returns `true` * because there are no elements in it that _do not_ match the predicate. * See a more detailed explanation of this logic concept in ["Vacuous truth"](https://en.wikipedia.org/wiki/Vacuous_truth) article. * * @sample samples.collections.Collections.Aggregates.all */ public inline fun IntArray.all(predicate: (Int) -> Boolean): Boolean { for (element in this) if (!predicate(element)) return false return true } /** * Returns `true` if all elements match the given [predicate]. * * Note that if the array contains no elements, the function returns `true` * because there are no elements in it that _do not_ match the predicate. * See a more detailed explanation of this logic concept in ["Vacuous truth"](https://en.wikipedia.org/wiki/Vacuous_truth) article. * * @sample samples.collections.Collections.Aggregates.all */ public inline fun LongArray.all(predicate: (Long) -> Boolean): Boolean { for (element in this) if (!predicate(element)) return false return true } /** * Returns `true` if all elements match the given [predicate]. * * Note that if the array contains no elements, the function returns `true` * because there are no elements in it that _do not_ match the predicate. * See a more detailed explanation of this logic concept in ["Vacuous truth"](https://en.wikipedia.org/wiki/Vacuous_truth) article. * * @sample samples.collections.Collections.Aggregates.all */ public inline fun FloatArray.all(predicate: (Float) -> Boolean): Boolean { for (element in this) if (!predicate(element)) return false return true } /** * Returns `true` if all elements match the given [predicate]. * * Note that if the array contains no elements, the function returns `true` * because there are no elements in it that _do not_ match the predicate. * See a more detailed explanation of this logic concept in ["Vacuous truth"](https://en.wikipedia.org/wiki/Vacuous_truth) article. * * @sample samples.collections.Collections.Aggregates.all */ public inline fun DoubleArray.all(predicate: (Double) -> Boolean): Boolean { for (element in this) if (!predicate(element)) return false return true } /** * Returns `true` if all elements match the given [predicate]. * * Note that if the array contains no elements, the function returns `true` * because there are no elements in it that _do not_ match the predicate. * See a more detailed explanation of this logic concept in ["Vacuous truth"](https://en.wikipedia.org/wiki/Vacuous_truth) article. * * @sample samples.collections.Collections.Aggregates.all */ public inline fun BooleanArray.all(predicate: (Boolean) -> Boolean): Boolean { for (element in this) if (!predicate(element)) return false return true } /** * Returns `true` if all elements match the given [predicate]. * * Note that if the array contains no elements, the function returns `true` * because there are no elements in it that _do not_ match the predicate. * See a more detailed explanation of this logic concept in ["Vacuous truth"](https://en.wikipedia.org/wiki/Vacuous_truth) article. * * @sample samples.collections.Collections.Aggregates.all */ public inline fun CharArray.all(predicate: (Char) -> Boolean): Boolean { for (element in this) if (!predicate(element)) return false return true } /** * Returns `true` if array has at least one element. * * @sample samples.collections.Collections.Aggregates.any */ public fun Array.any(): Boolean { return !isEmpty() } /** * Returns `true` if array has at least one element. * * @sample samples.collections.Collections.Aggregates.any */ public fun ByteArray.any(): Boolean { return !isEmpty() } /** * Returns `true` if array has at least one element. * * @sample samples.collections.Collections.Aggregates.any */ public fun ShortArray.any(): Boolean { return !isEmpty() } /** * Returns `true` if array has at least one element. * * @sample samples.collections.Collections.Aggregates.any */ public fun IntArray.any(): Boolean { return !isEmpty() } /** * Returns `true` if array has at least one element. * * @sample samples.collections.Collections.Aggregates.any */ public fun LongArray.any(): Boolean { return !isEmpty() } /** * Returns `true` if array has at least one element. * * @sample samples.collections.Collections.Aggregates.any */ public fun FloatArray.any(): Boolean { return !isEmpty() } /** * Returns `true` if array has at least one element. * * @sample samples.collections.Collections.Aggregates.any */ public fun DoubleArray.any(): Boolean { return !isEmpty() } /** * Returns `true` if array has at least one element. * * @sample samples.collections.Collections.Aggregates.any */ public fun BooleanArray.any(): Boolean { return !isEmpty() } /** * Returns `true` if array has at least one element. * * @sample samples.collections.Collections.Aggregates.any */ public fun CharArray.any(): Boolean { return !isEmpty() } /** * Returns `true` if at least one element matches the given [predicate]. * * @sample samples.collections.Collections.Aggregates.anyWithPredicate */ public inline fun Array.any(predicate: (T) -> Boolean): Boolean { for (element in this) if (predicate(element)) return true return false } /** * Returns `true` if at least one element matches the given [predicate]. * * @sample samples.collections.Collections.Aggregates.anyWithPredicate */ public inline fun ByteArray.any(predicate: (Byte) -> Boolean): Boolean { for (element in this) if (predicate(element)) return true return false } /** * Returns `true` if at least one element matches the given [predicate]. * * @sample samples.collections.Collections.Aggregates.anyWithPredicate */ public inline fun ShortArray.any(predicate: (Short) -> Boolean): Boolean { for (element in this) if (predicate(element)) return true return false } /** * Returns `true` if at least one element matches the given [predicate]. * * @sample samples.collections.Collections.Aggregates.anyWithPredicate */ public inline fun IntArray.any(predicate: (Int) -> Boolean): Boolean { for (element in this) if (predicate(element)) return true return false } /** * Returns `true` if at least one element matches the given [predicate]. * * @sample samples.collections.Collections.Aggregates.anyWithPredicate */ public inline fun LongArray.any(predicate: (Long) -> Boolean): Boolean { for (element in this) if (predicate(element)) return true return false } /** * Returns `true` if at least one element matches the given [predicate]. * * @sample samples.collections.Collections.Aggregates.anyWithPredicate */ public inline fun FloatArray.any(predicate: (Float) -> Boolean): Boolean { for (element in this) if (predicate(element)) return true return false } /** * Returns `true` if at least one element matches the given [predicate]. * * @sample samples.collections.Collections.Aggregates.anyWithPredicate */ public inline fun DoubleArray.any(predicate: (Double) -> Boolean): Boolean { for (element in this) if (predicate(element)) return true return false } /** * Returns `true` if at least one element matches the given [predicate]. * * @sample samples.collections.Collections.Aggregates.anyWithPredicate */ public inline fun BooleanArray.any(predicate: (Boolean) -> Boolean): Boolean { for (element in this) if (predicate(element)) return true return false } /** * Returns `true` if at least one element matches the given [predicate]. * * @sample samples.collections.Collections.Aggregates.anyWithPredicate */ public inline fun CharArray.any(predicate: (Char) -> Boolean): Boolean { for (element in this) if (predicate(element)) return true return false } /** * Returns the number of elements in this array. */ @kotlin.internal.InlineOnly public inline fun Array.count(): Int { return size } /** * Returns the number of elements in this array. */ @kotlin.internal.InlineOnly public inline fun ByteArray.count(): Int { return size } /** * Returns the number of elements in this array. */ @kotlin.internal.InlineOnly public inline fun ShortArray.count(): Int { return size } /** * Returns the number of elements in this array. */ @kotlin.internal.InlineOnly public inline fun IntArray.count(): Int { return size } /** * Returns the number of elements in this array. */ @kotlin.internal.InlineOnly public inline fun LongArray.count(): Int { return size } /** * Returns the number of elements in this array. */ @kotlin.internal.InlineOnly public inline fun FloatArray.count(): Int { return size } /** * Returns the number of elements in this array. */ @kotlin.internal.InlineOnly public inline fun DoubleArray.count(): Int { return size } /** * Returns the number of elements in this array. */ @kotlin.internal.InlineOnly public inline fun BooleanArray.count(): Int { return size } /** * Returns the number of elements in this array. */ @kotlin.internal.InlineOnly public inline fun CharArray.count(): Int { return size } /** * Returns the number of elements matching the given [predicate]. */ public inline fun Array.count(predicate: (T) -> Boolean): Int { var count = 0 for (element in this) if (predicate(element)) ++count return count } /** * Returns the number of elements matching the given [predicate]. */ public inline fun ByteArray.count(predicate: (Byte) -> Boolean): Int { var count = 0 for (element in this) if (predicate(element)) ++count return count } /** * Returns the number of elements matching the given [predicate]. */ public inline fun ShortArray.count(predicate: (Short) -> Boolean): Int { var count = 0 for (element in this) if (predicate(element)) ++count return count } /** * Returns the number of elements matching the given [predicate]. */ public inline fun IntArray.count(predicate: (Int) -> Boolean): Int { var count = 0 for (element in this) if (predicate(element)) ++count return count } /** * Returns the number of elements matching the given [predicate]. */ public inline fun LongArray.count(predicate: (Long) -> Boolean): Int { var count = 0 for (element in this) if (predicate(element)) ++count return count } /** * Returns the number of elements matching the given [predicate]. */ public inline fun FloatArray.count(predicate: (Float) -> Boolean): Int { var count = 0 for (element in this) if (predicate(element)) ++count return count } /** * Returns the number of elements matching the given [predicate]. */ public inline fun DoubleArray.count(predicate: (Double) -> Boolean): Int { var count = 0 for (element in this) if (predicate(element)) ++count return count } /** * Returns the number of elements matching the given [predicate]. */ public inline fun BooleanArray.count(predicate: (Boolean) -> Boolean): Int { var count = 0 for (element in this) if (predicate(element)) ++count return count } /** * Returns the number of elements matching the given [predicate]. */ public inline fun CharArray.count(predicate: (Char) -> Boolean): Int { var count = 0 for (element in this) if (predicate(element)) ++count return count } /** * Accumulates value starting with [initial] value and applying [operation] from left to right * to current accumulator value and each element. * * Returns the specified [initial] value if the array is empty. * * @param [operation] function that takes current accumulator value and an element, and calculates the next accumulator value. */ public inline fun Array.fold(initial: R, operation: (acc: R, T) -> R): R { var accumulator = initial for (element in this) accumulator = operation(accumulator, element) return accumulator } /** * Accumulates value starting with [initial] value and applying [operation] from left to right * to current accumulator value and each element. * * Returns the specified [initial] value if the array is empty. * * @param [operation] function that takes current accumulator value and an element, and calculates the next accumulator value. */ public inline fun ByteArray.fold(initial: R, operation: (acc: R, Byte) -> R): R { var accumulator = initial for (element in this) accumulator = operation(accumulator, element) return accumulator } /** * Accumulates value starting with [initial] value and applying [operation] from left to right * to current accumulator value and each element. * * Returns the specified [initial] value if the array is empty. * * @param [operation] function that takes current accumulator value and an element, and calculates the next accumulator value. */ public inline fun ShortArray.fold(initial: R, operation: (acc: R, Short) -> R): R { var accumulator = initial for (element in this) accumulator = operation(accumulator, element) return accumulator } /** * Accumulates value starting with [initial] value and applying [operation] from left to right * to current accumulator value and each element. * * Returns the specified [initial] value if the array is empty. * * @param [operation] function that takes current accumulator value and an element, and calculates the next accumulator value. */ public inline fun IntArray.fold(initial: R, operation: (acc: R, Int) -> R): R { var accumulator = initial for (element in this) accumulator = operation(accumulator, element) return accumulator } /** * Accumulates value starting with [initial] value and applying [operation] from left to right * to current accumulator value and each element. * * Returns the specified [initial] value if the array is empty. * * @param [operation] function that takes current accumulator value and an element, and calculates the next accumulator value. */ public inline fun LongArray.fold(initial: R, operation: (acc: R, Long) -> R): R { var accumulator = initial for (element in this) accumulator = operation(accumulator, element) return accumulator } /** * Accumulates value starting with [initial] value and applying [operation] from left to right * to current accumulator value and each element. * * Returns the specified [initial] value if the array is empty. * * @param [operation] function that takes current accumulator value and an element, and calculates the next accumulator value. */ public inline fun FloatArray.fold(initial: R, operation: (acc: R, Float) -> R): R { var accumulator = initial for (element in this) accumulator = operation(accumulator, element) return accumulator } /** * Accumulates value starting with [initial] value and applying [operation] from left to right * to current accumulator value and each element. * * Returns the specified [initial] value if the array is empty. * * @param [operation] function that takes current accumulator value and an element, and calculates the next accumulator value. */ public inline fun DoubleArray.fold(initial: R, operation: (acc: R, Double) -> R): R { var accumulator = initial for (element in this) accumulator = operation(accumulator, element) return accumulator } /** * Accumulates value starting with [initial] value and applying [operation] from left to right * to current accumulator value and each element. * * Returns the specified [initial] value if the array is empty. * * @param [operation] function that takes current accumulator value and an element, and calculates the next accumulator value. */ public inline fun BooleanArray.fold(initial: R, operation: (acc: R, Boolean) -> R): R { var accumulator = initial for (element in this) accumulator = operation(accumulator, element) return accumulator } /** * Accumulates value starting with [initial] value and applying [operation] from left to right * to current accumulator value and each element. * * Returns the specified [initial] value if the array is empty. * * @param [operation] function that takes current accumulator value and an element, and calculates the next accumulator value. */ public inline fun CharArray.fold(initial: R, operation: (acc: R, Char) -> R): R { var accumulator = initial for (element in this) accumulator = operation(accumulator, element) return accumulator } /** * Accumulates value starting with [initial] value and applying [operation] from left to right * to current accumulator value and each element with its index in the original array. * * Returns the specified [initial] value if the array is empty. * * @param [operation] function that takes the index of an element, current accumulator value * and the element itself, and calculates the next accumulator value. */ public inline fun Array.foldIndexed(initial: R, operation: (index: Int, acc: R, T) -> R): R { var index = 0 var accumulator = initial for (element in this) accumulator = operation(index++, accumulator, element) return accumulator } /** * Accumulates value starting with [initial] value and applying [operation] from left to right * to current accumulator value and each element with its index in the original array. * * Returns the specified [initial] value if the array is empty. * * @param [operation] function that takes the index of an element, current accumulator value * and the element itself, and calculates the next accumulator value. */ public inline fun ByteArray.foldIndexed(initial: R, operation: (index: Int, acc: R, Byte) -> R): R { var index = 0 var accumulator = initial for (element in this) accumulator = operation(index++, accumulator, element) return accumulator } /** * Accumulates value starting with [initial] value and applying [operation] from left to right * to current accumulator value and each element with its index in the original array. * * Returns the specified [initial] value if the array is empty. * * @param [operation] function that takes the index of an element, current accumulator value * and the element itself, and calculates the next accumulator value. */ public inline fun ShortArray.foldIndexed(initial: R, operation: (index: Int, acc: R, Short) -> R): R { var index = 0 var accumulator = initial for (element in this) accumulator = operation(index++, accumulator, element) return accumulator } /** * Accumulates value starting with [initial] value and applying [operation] from left to right * to current accumulator value and each element with its index in the original array. * * Returns the specified [initial] value if the array is empty. * * @param [operation] function that takes the index of an element, current accumulator value * and the element itself, and calculates the next accumulator value. */ public inline fun IntArray.foldIndexed(initial: R, operation: (index: Int, acc: R, Int) -> R): R { var index = 0 var accumulator = initial for (element in this) accumulator = operation(index++, accumulator, element) return accumulator } /** * Accumulates value starting with [initial] value and applying [operation] from left to right * to current accumulator value and each element with its index in the original array. * * Returns the specified [initial] value if the array is empty. * * @param [operation] function that takes the index of an element, current accumulator value * and the element itself, and calculates the next accumulator value. */ public inline fun LongArray.foldIndexed(initial: R, operation: (index: Int, acc: R, Long) -> R): R { var index = 0 var accumulator = initial for (element in this) accumulator = operation(index++, accumulator, element) return accumulator } /** * Accumulates value starting with [initial] value and applying [operation] from left to right * to current accumulator value and each element with its index in the original array. * * Returns the specified [initial] value if the array is empty. * * @param [operation] function that takes the index of an element, current accumulator value * and the element itself, and calculates the next accumulator value. */ public inline fun FloatArray.foldIndexed(initial: R, operation: (index: Int, acc: R, Float) -> R): R { var index = 0 var accumulator = initial for (element in this) accumulator = operation(index++, accumulator, element) return accumulator } /** * Accumulates value starting with [initial] value and applying [operation] from left to right * to current accumulator value and each element with its index in the original array. * * Returns the specified [initial] value if the array is empty. * * @param [operation] function that takes the index of an element, current accumulator value * and the element itself, and calculates the next accumulator value. */ public inline fun DoubleArray.foldIndexed(initial: R, operation: (index: Int, acc: R, Double) -> R): R { var index = 0 var accumulator = initial for (element in this) accumulator = operation(index++, accumulator, element) return accumulator } /** * Accumulates value starting with [initial] value and applying [operation] from left to right * to current accumulator value and each element with its index in the original array. * * Returns the specified [initial] value if the array is empty. * * @param [operation] function that takes the index of an element, current accumulator value * and the element itself, and calculates the next accumulator value. */ public inline fun BooleanArray.foldIndexed(initial: R, operation: (index: Int, acc: R, Boolean) -> R): R { var index = 0 var accumulator = initial for (element in this) accumulator = operation(index++, accumulator, element) return accumulator } /** * Accumulates value starting with [initial] value and applying [operation] from left to right * to current accumulator value and each element with its index in the original array. * * Returns the specified [initial] value if the array is empty. * * @param [operation] function that takes the index of an element, current accumulator value * and the element itself, and calculates the next accumulator value. */ public inline fun CharArray.foldIndexed(initial: R, operation: (index: Int, acc: R, Char) -> R): R { var index = 0 var accumulator = initial for (element in this) accumulator = operation(index++, accumulator, element) return accumulator } /** * Accumulates value starting with [initial] value and applying [operation] from right to left * to each element and current accumulator value. * * Returns the specified [initial] value if the array is empty. * * @param [operation] function that takes an element and current accumulator value, and calculates the next accumulator value. */ public inline fun Array.foldRight(initial: R, operation: (T, acc: R) -> R): R { var index = lastIndex var accumulator = initial while (index >= 0) { accumulator = operation(get(index--), accumulator) } return accumulator } /** * Accumulates value starting with [initial] value and applying [operation] from right to left * to each element and current accumulator value. * * Returns the specified [initial] value if the array is empty. * * @param [operation] function that takes an element and current accumulator value, and calculates the next accumulator value. */ public inline fun ByteArray.foldRight(initial: R, operation: (Byte, acc: R) -> R): R { var index = lastIndex var accumulator = initial while (index >= 0) { accumulator = operation(get(index--), accumulator) } return accumulator } /** * Accumulates value starting with [initial] value and applying [operation] from right to left * to each element and current accumulator value. * * Returns the specified [initial] value if the array is empty. * * @param [operation] function that takes an element and current accumulator value, and calculates the next accumulator value. */ public inline fun ShortArray.foldRight(initial: R, operation: (Short, acc: R) -> R): R { var index = lastIndex var accumulator = initial while (index >= 0) { accumulator = operation(get(index--), accumulator) } return accumulator } /** * Accumulates value starting with [initial] value and applying [operation] from right to left * to each element and current accumulator value. * * Returns the specified [initial] value if the array is empty. * * @param [operation] function that takes an element and current accumulator value, and calculates the next accumulator value. */ public inline fun IntArray.foldRight(initial: R, operation: (Int, acc: R) -> R): R { var index = lastIndex var accumulator = initial while (index >= 0) { accumulator = operation(get(index--), accumulator) } return accumulator } /** * Accumulates value starting with [initial] value and applying [operation] from right to left * to each element and current accumulator value. * * Returns the specified [initial] value if the array is empty. * * @param [operation] function that takes an element and current accumulator value, and calculates the next accumulator value. */ public inline fun LongArray.foldRight(initial: R, operation: (Long, acc: R) -> R): R { var index = lastIndex var accumulator = initial while (index >= 0) { accumulator = operation(get(index--), accumulator) } return accumulator } /** * Accumulates value starting with [initial] value and applying [operation] from right to left * to each element and current accumulator value. * * Returns the specified [initial] value if the array is empty. * * @param [operation] function that takes an element and current accumulator value, and calculates the next accumulator value. */ public inline fun FloatArray.foldRight(initial: R, operation: (Float, acc: R) -> R): R { var index = lastIndex var accumulator = initial while (index >= 0) { accumulator = operation(get(index--), accumulator) } return accumulator } /** * Accumulates value starting with [initial] value and applying [operation] from right to left * to each element and current accumulator value. * * Returns the specified [initial] value if the array is empty. * * @param [operation] function that takes an element and current accumulator value, and calculates the next accumulator value. */ public inline fun DoubleArray.foldRight(initial: R, operation: (Double, acc: R) -> R): R { var index = lastIndex var accumulator = initial while (index >= 0) { accumulator = operation(get(index--), accumulator) } return accumulator } /** * Accumulates value starting with [initial] value and applying [operation] from right to left * to each element and current accumulator value. * * Returns the specified [initial] value if the array is empty. * * @param [operation] function that takes an element and current accumulator value, and calculates the next accumulator value. */ public inline fun BooleanArray.foldRight(initial: R, operation: (Boolean, acc: R) -> R): R { var index = lastIndex var accumulator = initial while (index >= 0) { accumulator = operation(get(index--), accumulator) } return accumulator } /** * Accumulates value starting with [initial] value and applying [operation] from right to left * to each element and current accumulator value. * * Returns the specified [initial] value if the array is empty. * * @param [operation] function that takes an element and current accumulator value, and calculates the next accumulator value. */ public inline fun CharArray.foldRight(initial: R, operation: (Char, acc: R) -> R): R { var index = lastIndex var accumulator = initial while (index >= 0) { accumulator = operation(get(index--), accumulator) } return accumulator } /** * Accumulates value starting with [initial] value and applying [operation] from right to left * to each element with its index in the original array and current accumulator value. * * Returns the specified [initial] value if the array is empty. * * @param [operation] function that takes the index of an element, the element itself * and current accumulator value, and calculates the next accumulator value. */ public inline fun Array.foldRightIndexed(initial: R, operation: (index: Int, T, acc: R) -> R): R { var index = lastIndex var accumulator = initial while (index >= 0) { accumulator = operation(index, get(index), accumulator) --index } return accumulator } /** * Accumulates value starting with [initial] value and applying [operation] from right to left * to each element with its index in the original array and current accumulator value. * * Returns the specified [initial] value if the array is empty. * * @param [operation] function that takes the index of an element, the element itself * and current accumulator value, and calculates the next accumulator value. */ public inline fun ByteArray.foldRightIndexed(initial: R, operation: (index: Int, Byte, acc: R) -> R): R { var index = lastIndex var accumulator = initial while (index >= 0) { accumulator = operation(index, get(index), accumulator) --index } return accumulator } /** * Accumulates value starting with [initial] value and applying [operation] from right to left * to each element with its index in the original array and current accumulator value. * * Returns the specified [initial] value if the array is empty. * * @param [operation] function that takes the index of an element, the element itself * and current accumulator value, and calculates the next accumulator value. */ public inline fun ShortArray.foldRightIndexed(initial: R, operation: (index: Int, Short, acc: R) -> R): R { var index = lastIndex var accumulator = initial while (index >= 0) { accumulator = operation(index, get(index), accumulator) --index } return accumulator } /** * Accumulates value starting with [initial] value and applying [operation] from right to left * to each element with its index in the original array and current accumulator value. * * Returns the specified [initial] value if the array is empty. * * @param [operation] function that takes the index of an element, the element itself * and current accumulator value, and calculates the next accumulator value. */ public inline fun IntArray.foldRightIndexed(initial: R, operation: (index: Int, Int, acc: R) -> R): R { var index = lastIndex var accumulator = initial while (index >= 0) { accumulator = operation(index, get(index), accumulator) --index } return accumulator } /** * Accumulates value starting with [initial] value and applying [operation] from right to left * to each element with its index in the original array and current accumulator value. * * Returns the specified [initial] value if the array is empty. * * @param [operation] function that takes the index of an element, the element itself * and current accumulator value, and calculates the next accumulator value. */ public inline fun LongArray.foldRightIndexed(initial: R, operation: (index: Int, Long, acc: R) -> R): R { var index = lastIndex var accumulator = initial while (index >= 0) { accumulator = operation(index, get(index), accumulator) --index } return accumulator } /** * Accumulates value starting with [initial] value and applying [operation] from right to left * to each element with its index in the original array and current accumulator value. * * Returns the specified [initial] value if the array is empty. * * @param [operation] function that takes the index of an element, the element itself * and current accumulator value, and calculates the next accumulator value. */ public inline fun FloatArray.foldRightIndexed(initial: R, operation: (index: Int, Float, acc: R) -> R): R { var index = lastIndex var accumulator = initial while (index >= 0) { accumulator = operation(index, get(index), accumulator) --index } return accumulator } /** * Accumulates value starting with [initial] value and applying [operation] from right to left * to each element with its index in the original array and current accumulator value. * * Returns the specified [initial] value if the array is empty. * * @param [operation] function that takes the index of an element, the element itself * and current accumulator value, and calculates the next accumulator value. */ public inline fun DoubleArray.foldRightIndexed(initial: R, operation: (index: Int, Double, acc: R) -> R): R { var index = lastIndex var accumulator = initial while (index >= 0) { accumulator = operation(index, get(index), accumulator) --index } return accumulator } /** * Accumulates value starting with [initial] value and applying [operation] from right to left * to each element with its index in the original array and current accumulator value. * * Returns the specified [initial] value if the array is empty. * * @param [operation] function that takes the index of an element, the element itself * and current accumulator value, and calculates the next accumulator value. */ public inline fun BooleanArray.foldRightIndexed(initial: R, operation: (index: Int, Boolean, acc: R) -> R): R { var index = lastIndex var accumulator = initial while (index >= 0) { accumulator = operation(index, get(index), accumulator) --index } return accumulator } /** * Accumulates value starting with [initial] value and applying [operation] from right to left * to each element with its index in the original array and current accumulator value. * * Returns the specified [initial] value if the array is empty. * * @param [operation] function that takes the index of an element, the element itself * and current accumulator value, and calculates the next accumulator value. */ public inline fun CharArray.foldRightIndexed(initial: R, operation: (index: Int, Char, acc: R) -> R): R { var index = lastIndex var accumulator = initial while (index >= 0) { accumulator = operation(index, get(index), accumulator) --index } return accumulator } /** * Performs the given [action] on each element. */ public inline fun Array.forEach(action: (T) -> Unit): Unit { for (element in this) action(element) } /** * Performs the given [action] on each element. */ public inline fun ByteArray.forEach(action: (Byte) -> Unit): Unit { for (element in this) action(element) } /** * Performs the given [action] on each element. */ public inline fun ShortArray.forEach(action: (Short) -> Unit): Unit { for (element in this) action(element) } /** * Performs the given [action] on each element. */ public inline fun IntArray.forEach(action: (Int) -> Unit): Unit { for (element in this) action(element) } /** * Performs the given [action] on each element. */ public inline fun LongArray.forEach(action: (Long) -> Unit): Unit { for (element in this) action(element) } /** * Performs the given [action] on each element. */ public inline fun FloatArray.forEach(action: (Float) -> Unit): Unit { for (element in this) action(element) } /** * Performs the given [action] on each element. */ public inline fun DoubleArray.forEach(action: (Double) -> Unit): Unit { for (element in this) action(element) } /** * Performs the given [action] on each element. */ public inline fun BooleanArray.forEach(action: (Boolean) -> Unit): Unit { for (element in this) action(element) } /** * Performs the given [action] on each element. */ public inline fun CharArray.forEach(action: (Char) -> Unit): Unit { for (element in this) action(element) } /** * Performs the given [action] on each element, providing sequential index with the element. * @param [action] function that takes the index of an element and the element itself * and performs the action on the element. */ public inline fun Array.forEachIndexed(action: (index: Int, T) -> Unit): Unit { var index = 0 for (item in this) action(index++, item) } /** * Performs the given [action] on each element, providing sequential index with the element. * @param [action] function that takes the index of an element and the element itself * and performs the action on the element. */ public inline fun ByteArray.forEachIndexed(action: (index: Int, Byte) -> Unit): Unit { var index = 0 for (item in this) action(index++, item) } /** * Performs the given [action] on each element, providing sequential index with the element. * @param [action] function that takes the index of an element and the element itself * and performs the action on the element. */ public inline fun ShortArray.forEachIndexed(action: (index: Int, Short) -> Unit): Unit { var index = 0 for (item in this) action(index++, item) } /** * Performs the given [action] on each element, providing sequential index with the element. * @param [action] function that takes the index of an element and the element itself * and performs the action on the element. */ public inline fun IntArray.forEachIndexed(action: (index: Int, Int) -> Unit): Unit { var index = 0 for (item in this) action(index++, item) } /** * Performs the given [action] on each element, providing sequential index with the element. * @param [action] function that takes the index of an element and the element itself * and performs the action on the element. */ public inline fun LongArray.forEachIndexed(action: (index: Int, Long) -> Unit): Unit { var index = 0 for (item in this) action(index++, item) } /** * Performs the given [action] on each element, providing sequential index with the element. * @param [action] function that takes the index of an element and the element itself * and performs the action on the element. */ public inline fun FloatArray.forEachIndexed(action: (index: Int, Float) -> Unit): Unit { var index = 0 for (item in this) action(index++, item) } /** * Performs the given [action] on each element, providing sequential index with the element. * @param [action] function that takes the index of an element and the element itself * and performs the action on the element. */ public inline fun DoubleArray.forEachIndexed(action: (index: Int, Double) -> Unit): Unit { var index = 0 for (item in this) action(index++, item) } /** * Performs the given [action] on each element, providing sequential index with the element. * @param [action] function that takes the index of an element and the element itself * and performs the action on the element. */ public inline fun BooleanArray.forEachIndexed(action: (index: Int, Boolean) -> Unit): Unit { var index = 0 for (item in this) action(index++, item) } /** * Performs the given [action] on each element, providing sequential index with the element. * @param [action] function that takes the index of an element and the element itself * and performs the action on the element. */ public inline fun CharArray.forEachIndexed(action: (index: Int, Char) -> Unit): Unit { var index = 0 for (item in this) action(index++, item) } /** * Returns the largest element. * * If any of elements is `NaN`, this function returns `NaN`. * * @throws NoSuchElementException if the array is empty. * * @sample samples.collections.Collections.Aggregates.maxMinFloating */ @SinceKotlin("1.7") @kotlin.jvm.JvmName("maxOrThrow") @Suppress("CONFLICTING_OVERLOADS") public fun Array.max(): Double { if (isEmpty()) throw NoSuchElementException() var max = this[0] for (i in 1..lastIndex) { val e = this[i] max = maxOf(max, e) } return max } /** * Returns the largest element. * * If any of elements is `NaN`, this function returns `NaN`. * * @throws NoSuchElementException if the array is empty. * * @sample samples.collections.Collections.Aggregates.maxMinFloating */ @SinceKotlin("1.7") @kotlin.jvm.JvmName("maxOrThrow") @Suppress("CONFLICTING_OVERLOADS") public fun Array.max(): Float { if (isEmpty()) throw NoSuchElementException() var max = this[0] for (i in 1..lastIndex) { val e = this[i] max = maxOf(max, e) } return max } /** * Returns the largest element. * * If there are multiple equal maximal elements, this function returns the first of those elements. * * @throws NoSuchElementException if the array is empty. * * @sample samples.collections.Collections.Aggregates.maxMinGeneric */ @SinceKotlin("1.7") @kotlin.jvm.JvmName("maxOrThrow") @Suppress("CONFLICTING_OVERLOADS") public fun > Array.max(): T { if (isEmpty()) throw NoSuchElementException() var max = this[0] for (i in 1..lastIndex) { val e = this[i] if (max < e) max = e } return max } /** * Returns the largest element. * * @throws NoSuchElementException if the array is empty. * * @sample samples.collections.Collections.Aggregates.maxMinPrimitive */ @SinceKotlin("1.7") @kotlin.jvm.JvmName("maxOrThrow") @Suppress("CONFLICTING_OVERLOADS") public fun ByteArray.max(): Byte { if (isEmpty()) throw NoSuchElementException() var max = this[0] for (i in 1..lastIndex) { val e = this[i] if (max < e) max = e } return max } /** * Returns the largest element. * * @throws NoSuchElementException if the array is empty. * * @sample samples.collections.Collections.Aggregates.maxMinPrimitive */ @SinceKotlin("1.7") @kotlin.jvm.JvmName("maxOrThrow") @Suppress("CONFLICTING_OVERLOADS") public fun ShortArray.max(): Short { if (isEmpty()) throw NoSuchElementException() var max = this[0] for (i in 1..lastIndex) { val e = this[i] if (max < e) max = e } return max } /** * Returns the largest element. * * @throws NoSuchElementException if the array is empty. * * @sample samples.collections.Collections.Aggregates.maxMinPrimitive */ @SinceKotlin("1.7") @kotlin.jvm.JvmName("maxOrThrow") @Suppress("CONFLICTING_OVERLOADS") public fun IntArray.max(): Int { if (isEmpty()) throw NoSuchElementException() var max = this[0] for (i in 1..lastIndex) { val e = this[i] if (max < e) max = e } return max } /** * Returns the largest element. * * @throws NoSuchElementException if the array is empty. * * @sample samples.collections.Collections.Aggregates.maxMinPrimitive */ @SinceKotlin("1.7") @kotlin.jvm.JvmName("maxOrThrow") @Suppress("CONFLICTING_OVERLOADS") public fun LongArray.max(): Long { if (isEmpty()) throw NoSuchElementException() var max = this[0] for (i in 1..lastIndex) { val e = this[i] if (max < e) max = e } return max } /** * Returns the largest element. * * If any of elements is `NaN`, this function returns `NaN`. * * @throws NoSuchElementException if the array is empty. * * @sample samples.collections.Collections.Aggregates.maxMinFloating */ @SinceKotlin("1.7") @kotlin.jvm.JvmName("maxOrThrow") @Suppress("CONFLICTING_OVERLOADS") public fun FloatArray.max(): Float { if (isEmpty()) throw NoSuchElementException() var max = this[0] for (i in 1..lastIndex) { val e = this[i] max = maxOf(max, e) } return max } /** * Returns the largest element. * * If any of elements is `NaN`, this function returns `NaN`. * * @throws NoSuchElementException if the array is empty. * * @sample samples.collections.Collections.Aggregates.maxMinFloating */ @SinceKotlin("1.7") @kotlin.jvm.JvmName("maxOrThrow") @Suppress("CONFLICTING_OVERLOADS") public fun DoubleArray.max(): Double { if (isEmpty()) throw NoSuchElementException() var max = this[0] for (i in 1..lastIndex) { val e = this[i] max = maxOf(max, e) } return max } /** * Returns the largest element. * * @throws NoSuchElementException if the array is empty. * * @sample samples.collections.Collections.Aggregates.maxMinPrimitive */ @SinceKotlin("1.7") @kotlin.jvm.JvmName("maxOrThrow") @Suppress("CONFLICTING_OVERLOADS") public fun CharArray.max(): Char { if (isEmpty()) throw NoSuchElementException() var max = this[0] for (i in 1..lastIndex) { val e = this[i] if (max < e) max = e } return max } /** * Returns the first element yielding the largest value of the given [selector] function. * * If there are multiple equal maximal values returned by the [selector] function, * this function returns the first of elements corresponding to these values. * * Note that the function [selector] is not invoked when the array contains zero or one elements * because in these cases it is clear which element to return without invoking the [selector]. * Therefore it's recommended to avoid relying on side effects being performed by the [selector] function on each element. * * @throws NoSuchElementException if the array is empty. * * @sample samples.collections.Collections.Aggregates.minMaxByOrNull */ @SinceKotlin("1.7") @kotlin.jvm.JvmName("maxByOrThrow") @Suppress("CONFLICTING_OVERLOADS") public inline fun > Array.maxBy(selector: (T) -> R): T { if (isEmpty()) throw NoSuchElementException() var maxElem = this[0] val lastIndex = this.lastIndex if (lastIndex == 0) return maxElem var maxValue = selector(maxElem) for (i in 1..lastIndex) { val e = this[i] val v = selector(e) if (maxValue < v) { maxElem = e maxValue = v } } return maxElem } /** * Returns the first element yielding the largest value of the given [selector] function. * * If there are multiple equal maximal values returned by the [selector] function, * this function returns the first of elements corresponding to these values. * * Note that the function [selector] is not invoked when the array contains zero or one elements * because in these cases it is clear which element to return without invoking the [selector]. * Therefore it's recommended to avoid relying on side effects being performed by the [selector] function on each element. * * @throws NoSuchElementException if the array is empty. * * @sample samples.collections.Collections.Aggregates.minMaxByOrNull */ @SinceKotlin("1.7") @kotlin.jvm.JvmName("maxByOrThrow") @Suppress("CONFLICTING_OVERLOADS") public inline fun > ByteArray.maxBy(selector: (Byte) -> R): Byte { if (isEmpty()) throw NoSuchElementException() var maxElem = this[0] val lastIndex = this.lastIndex if (lastIndex == 0) return maxElem var maxValue = selector(maxElem) for (i in 1..lastIndex) { val e = this[i] val v = selector(e) if (maxValue < v) { maxElem = e maxValue = v } } return maxElem } /** * Returns the first element yielding the largest value of the given [selector] function. * * If there are multiple equal maximal values returned by the [selector] function, * this function returns the first of elements corresponding to these values. * * Note that the function [selector] is not invoked when the array contains zero or one elements * because in these cases it is clear which element to return without invoking the [selector]. * Therefore it's recommended to avoid relying on side effects being performed by the [selector] function on each element. * * @throws NoSuchElementException if the array is empty. * * @sample samples.collections.Collections.Aggregates.minMaxByOrNull */ @SinceKotlin("1.7") @kotlin.jvm.JvmName("maxByOrThrow") @Suppress("CONFLICTING_OVERLOADS") public inline fun > ShortArray.maxBy(selector: (Short) -> R): Short { if (isEmpty()) throw NoSuchElementException() var maxElem = this[0] val lastIndex = this.lastIndex if (lastIndex == 0) return maxElem var maxValue = selector(maxElem) for (i in 1..lastIndex) { val e = this[i] val v = selector(e) if (maxValue < v) { maxElem = e maxValue = v } } return maxElem } /** * Returns the first element yielding the largest value of the given [selector] function. * * If there are multiple equal maximal values returned by the [selector] function, * this function returns the first of elements corresponding to these values. * * Note that the function [selector] is not invoked when the array contains zero or one elements * because in these cases it is clear which element to return without invoking the [selector]. * Therefore it's recommended to avoid relying on side effects being performed by the [selector] function on each element. * * @throws NoSuchElementException if the array is empty. * * @sample samples.collections.Collections.Aggregates.minMaxByOrNull */ @SinceKotlin("1.7") @kotlin.jvm.JvmName("maxByOrThrow") @Suppress("CONFLICTING_OVERLOADS") public inline fun > IntArray.maxBy(selector: (Int) -> R): Int { if (isEmpty()) throw NoSuchElementException() var maxElem = this[0] val lastIndex = this.lastIndex if (lastIndex == 0) return maxElem var maxValue = selector(maxElem) for (i in 1..lastIndex) { val e = this[i] val v = selector(e) if (maxValue < v) { maxElem = e maxValue = v } } return maxElem } /** * Returns the first element yielding the largest value of the given [selector] function. * * If there are multiple equal maximal values returned by the [selector] function, * this function returns the first of elements corresponding to these values. * * Note that the function [selector] is not invoked when the array contains zero or one elements * because in these cases it is clear which element to return without invoking the [selector]. * Therefore it's recommended to avoid relying on side effects being performed by the [selector] function on each element. * * @throws NoSuchElementException if the array is empty. * * @sample samples.collections.Collections.Aggregates.minMaxByOrNull */ @SinceKotlin("1.7") @kotlin.jvm.JvmName("maxByOrThrow") @Suppress("CONFLICTING_OVERLOADS") public inline fun > LongArray.maxBy(selector: (Long) -> R): Long { if (isEmpty()) throw NoSuchElementException() var maxElem = this[0] val lastIndex = this.lastIndex if (lastIndex == 0) return maxElem var maxValue = selector(maxElem) for (i in 1..lastIndex) { val e = this[i] val v = selector(e) if (maxValue < v) { maxElem = e maxValue = v } } return maxElem } /** * Returns the first element yielding the largest value of the given [selector] function. * * If there are multiple equal maximal values returned by the [selector] function, * this function returns the first of elements corresponding to these values. * * Note that the function [selector] is not invoked when the array contains zero or one elements * because in these cases it is clear which element to return without invoking the [selector]. * Therefore it's recommended to avoid relying on side effects being performed by the [selector] function on each element. * * @throws NoSuchElementException if the array is empty. * * @sample samples.collections.Collections.Aggregates.minMaxByOrNull */ @SinceKotlin("1.7") @kotlin.jvm.JvmName("maxByOrThrow") @Suppress("CONFLICTING_OVERLOADS") public inline fun > FloatArray.maxBy(selector: (Float) -> R): Float { if (isEmpty()) throw NoSuchElementException() var maxElem = this[0] val lastIndex = this.lastIndex if (lastIndex == 0) return maxElem var maxValue = selector(maxElem) for (i in 1..lastIndex) { val e = this[i] val v = selector(e) if (maxValue < v) { maxElem = e maxValue = v } } return maxElem } /** * Returns the first element yielding the largest value of the given [selector] function. * * If there are multiple equal maximal values returned by the [selector] function, * this function returns the first of elements corresponding to these values. * * Note that the function [selector] is not invoked when the array contains zero or one elements * because in these cases it is clear which element to return without invoking the [selector]. * Therefore it's recommended to avoid relying on side effects being performed by the [selector] function on each element. * * @throws NoSuchElementException if the array is empty. * * @sample samples.collections.Collections.Aggregates.minMaxByOrNull */ @SinceKotlin("1.7") @kotlin.jvm.JvmName("maxByOrThrow") @Suppress("CONFLICTING_OVERLOADS") public inline fun > DoubleArray.maxBy(selector: (Double) -> R): Double { if (isEmpty()) throw NoSuchElementException() var maxElem = this[0] val lastIndex = this.lastIndex if (lastIndex == 0) return maxElem var maxValue = selector(maxElem) for (i in 1..lastIndex) { val e = this[i] val v = selector(e) if (maxValue < v) { maxElem = e maxValue = v } } return maxElem } /** * Returns the first element yielding the largest value of the given [selector] function. * * If there are multiple equal maximal values returned by the [selector] function, * this function returns the first of elements corresponding to these values. * * Note that the function [selector] is not invoked when the array contains zero or one elements * because in these cases it is clear which element to return without invoking the [selector]. * Therefore it's recommended to avoid relying on side effects being performed by the [selector] function on each element. * * @throws NoSuchElementException if the array is empty. * * @sample samples.collections.Collections.Aggregates.minMaxByOrNull */ @SinceKotlin("1.7") @kotlin.jvm.JvmName("maxByOrThrow") @Suppress("CONFLICTING_OVERLOADS") public inline fun > BooleanArray.maxBy(selector: (Boolean) -> R): Boolean { if (isEmpty()) throw NoSuchElementException() var maxElem = this[0] val lastIndex = this.lastIndex if (lastIndex == 0) return maxElem var maxValue = selector(maxElem) for (i in 1..lastIndex) { val e = this[i] val v = selector(e) if (maxValue < v) { maxElem = e maxValue = v } } return maxElem } /** * Returns the first element yielding the largest value of the given [selector] function. * * If there are multiple equal maximal values returned by the [selector] function, * this function returns the first of elements corresponding to these values. * * Note that the function [selector] is not invoked when the array contains zero or one elements * because in these cases it is clear which element to return without invoking the [selector]. * Therefore it's recommended to avoid relying on side effects being performed by the [selector] function on each element. * * @throws NoSuchElementException if the array is empty. * * @sample samples.collections.Collections.Aggregates.minMaxByOrNull */ @SinceKotlin("1.7") @kotlin.jvm.JvmName("maxByOrThrow") @Suppress("CONFLICTING_OVERLOADS") public inline fun > CharArray.maxBy(selector: (Char) -> R): Char { if (isEmpty()) throw NoSuchElementException() var maxElem = this[0] val lastIndex = this.lastIndex if (lastIndex == 0) return maxElem var maxValue = selector(maxElem) for (i in 1..lastIndex) { val e = this[i] val v = selector(e) if (maxValue < v) { maxElem = e maxValue = v } } return maxElem } /** * Returns the first element yielding the largest value of the given [selector] function or `null` if there are no elements. * * If there are multiple equal maximal values returned by the [selector] function, * this function returns the first of elements corresponding to these values. * * Note that the function [selector] is not invoked when the array contains zero or one elements * because in these cases it is clear which element to return without invoking the [selector]. * Therefore it's recommended to avoid relying on side effects being performed by the [selector] function on each element. * * @sample samples.collections.Collections.Aggregates.minMaxByOrNull */ @SinceKotlin("1.4") public inline fun > Array.maxByOrNull(selector: (T) -> R): T? { if (isEmpty()) return null var maxElem = this[0] val lastIndex = this.lastIndex if (lastIndex == 0) return maxElem var maxValue = selector(maxElem) for (i in 1..lastIndex) { val e = this[i] val v = selector(e) if (maxValue < v) { maxElem = e maxValue = v } } return maxElem } /** * Returns the first element yielding the largest value of the given [selector] function or `null` if there are no elements. * * If there are multiple equal maximal values returned by the [selector] function, * this function returns the first of elements corresponding to these values. * * Note that the function [selector] is not invoked when the array contains zero or one elements * because in these cases it is clear which element to return without invoking the [selector]. * Therefore it's recommended to avoid relying on side effects being performed by the [selector] function on each element. * * @sample samples.collections.Collections.Aggregates.minMaxByOrNull */ @SinceKotlin("1.4") public inline fun > ByteArray.maxByOrNull(selector: (Byte) -> R): Byte? { if (isEmpty()) return null var maxElem = this[0] val lastIndex = this.lastIndex if (lastIndex == 0) return maxElem var maxValue = selector(maxElem) for (i in 1..lastIndex) { val e = this[i] val v = selector(e) if (maxValue < v) { maxElem = e maxValue = v } } return maxElem } /** * Returns the first element yielding the largest value of the given [selector] function or `null` if there are no elements. * * If there are multiple equal maximal values returned by the [selector] function, * this function returns the first of elements corresponding to these values. * * Note that the function [selector] is not invoked when the array contains zero or one elements * because in these cases it is clear which element to return without invoking the [selector]. * Therefore it's recommended to avoid relying on side effects being performed by the [selector] function on each element. * * @sample samples.collections.Collections.Aggregates.minMaxByOrNull */ @SinceKotlin("1.4") public inline fun > ShortArray.maxByOrNull(selector: (Short) -> R): Short? { if (isEmpty()) return null var maxElem = this[0] val lastIndex = this.lastIndex if (lastIndex == 0) return maxElem var maxValue = selector(maxElem) for (i in 1..lastIndex) { val e = this[i] val v = selector(e) if (maxValue < v) { maxElem = e maxValue = v } } return maxElem } /** * Returns the first element yielding the largest value of the given [selector] function or `null` if there are no elements. * * If there are multiple equal maximal values returned by the [selector] function, * this function returns the first of elements corresponding to these values. * * Note that the function [selector] is not invoked when the array contains zero or one elements * because in these cases it is clear which element to return without invoking the [selector]. * Therefore it's recommended to avoid relying on side effects being performed by the [selector] function on each element. * * @sample samples.collections.Collections.Aggregates.minMaxByOrNull */ @SinceKotlin("1.4") public inline fun > IntArray.maxByOrNull(selector: (Int) -> R): Int? { if (isEmpty()) return null var maxElem = this[0] val lastIndex = this.lastIndex if (lastIndex == 0) return maxElem var maxValue = selector(maxElem) for (i in 1..lastIndex) { val e = this[i] val v = selector(e) if (maxValue < v) { maxElem = e maxValue = v } } return maxElem } /** * Returns the first element yielding the largest value of the given [selector] function or `null` if there are no elements. * * If there are multiple equal maximal values returned by the [selector] function, * this function returns the first of elements corresponding to these values. * * Note that the function [selector] is not invoked when the array contains zero or one elements * because in these cases it is clear which element to return without invoking the [selector]. * Therefore it's recommended to avoid relying on side effects being performed by the [selector] function on each element. * * @sample samples.collections.Collections.Aggregates.minMaxByOrNull */ @SinceKotlin("1.4") public inline fun > LongArray.maxByOrNull(selector: (Long) -> R): Long? { if (isEmpty()) return null var maxElem = this[0] val lastIndex = this.lastIndex if (lastIndex == 0) return maxElem var maxValue = selector(maxElem) for (i in 1..lastIndex) { val e = this[i] val v = selector(e) if (maxValue < v) { maxElem = e maxValue = v } } return maxElem } /** * Returns the first element yielding the largest value of the given [selector] function or `null` if there are no elements. * * If there are multiple equal maximal values returned by the [selector] function, * this function returns the first of elements corresponding to these values. * * Note that the function [selector] is not invoked when the array contains zero or one elements * because in these cases it is clear which element to return without invoking the [selector]. * Therefore it's recommended to avoid relying on side effects being performed by the [selector] function on each element. * * @sample samples.collections.Collections.Aggregates.minMaxByOrNull */ @SinceKotlin("1.4") public inline fun > FloatArray.maxByOrNull(selector: (Float) -> R): Float? { if (isEmpty()) return null var maxElem = this[0] val lastIndex = this.lastIndex if (lastIndex == 0) return maxElem var maxValue = selector(maxElem) for (i in 1..lastIndex) { val e = this[i] val v = selector(e) if (maxValue < v) { maxElem = e maxValue = v } } return maxElem } /** * Returns the first element yielding the largest value of the given [selector] function or `null` if there are no elements. * * If there are multiple equal maximal values returned by the [selector] function, * this function returns the first of elements corresponding to these values. * * Note that the function [selector] is not invoked when the array contains zero or one elements * because in these cases it is clear which element to return without invoking the [selector]. * Therefore it's recommended to avoid relying on side effects being performed by the [selector] function on each element. * * @sample samples.collections.Collections.Aggregates.minMaxByOrNull */ @SinceKotlin("1.4") public inline fun > DoubleArray.maxByOrNull(selector: (Double) -> R): Double? { if (isEmpty()) return null var maxElem = this[0] val lastIndex = this.lastIndex if (lastIndex == 0) return maxElem var maxValue = selector(maxElem) for (i in 1..lastIndex) { val e = this[i] val v = selector(e) if (maxValue < v) { maxElem = e maxValue = v } } return maxElem } /** * Returns the first element yielding the largest value of the given [selector] function or `null` if there are no elements. * * If there are multiple equal maximal values returned by the [selector] function, * this function returns the first of elements corresponding to these values. * * Note that the function [selector] is not invoked when the array contains zero or one elements * because in these cases it is clear which element to return without invoking the [selector]. * Therefore it's recommended to avoid relying on side effects being performed by the [selector] function on each element. * * @sample samples.collections.Collections.Aggregates.minMaxByOrNull */ @SinceKotlin("1.4") public inline fun > BooleanArray.maxByOrNull(selector: (Boolean) -> R): Boolean? { if (isEmpty()) return null var maxElem = this[0] val lastIndex = this.lastIndex if (lastIndex == 0) return maxElem var maxValue = selector(maxElem) for (i in 1..lastIndex) { val e = this[i] val v = selector(e) if (maxValue < v) { maxElem = e maxValue = v } } return maxElem } /** * Returns the first element yielding the largest value of the given [selector] function or `null` if there are no elements. * * If there are multiple equal maximal values returned by the [selector] function, * this function returns the first of elements corresponding to these values. * * Note that the function [selector] is not invoked when the array contains zero or one elements * because in these cases it is clear which element to return without invoking the [selector]. * Therefore it's recommended to avoid relying on side effects being performed by the [selector] function on each element. * * @sample samples.collections.Collections.Aggregates.minMaxByOrNull */ @SinceKotlin("1.4") public inline fun > CharArray.maxByOrNull(selector: (Char) -> R): Char? { if (isEmpty()) return null var maxElem = this[0] val lastIndex = this.lastIndex if (lastIndex == 0) return maxElem var maxValue = selector(maxElem) for (i in 1..lastIndex) { val e = this[i] val v = selector(e) if (maxValue < v) { maxElem = e maxValue = v } } return maxElem } /** * Returns the largest value among all values produced by [selector] function * applied to each element in the array. * * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`. * * @throws NoSuchElementException if the array is empty. * * @sample samples.collections.Collections.Aggregates.maxOfMinOfFloatingResult */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun Array.maxOf(selector: (T) -> Double): Double { if (isEmpty()) throw NoSuchElementException() var maxValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) maxValue = maxOf(maxValue, v) } return maxValue } /** * Returns the largest value among all values produced by [selector] function * applied to each element in the array. * * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`. * * @throws NoSuchElementException if the array is empty. * * @sample samples.collections.Collections.Aggregates.maxOfMinOfFloatingResult */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun ByteArray.maxOf(selector: (Byte) -> Double): Double { if (isEmpty()) throw NoSuchElementException() var maxValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) maxValue = maxOf(maxValue, v) } return maxValue } /** * Returns the largest value among all values produced by [selector] function * applied to each element in the array. * * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`. * * @throws NoSuchElementException if the array is empty. * * @sample samples.collections.Collections.Aggregates.maxOfMinOfFloatingResult */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun ShortArray.maxOf(selector: (Short) -> Double): Double { if (isEmpty()) throw NoSuchElementException() var maxValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) maxValue = maxOf(maxValue, v) } return maxValue } /** * Returns the largest value among all values produced by [selector] function * applied to each element in the array. * * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`. * * @throws NoSuchElementException if the array is empty. * * @sample samples.collections.Collections.Aggregates.maxOfMinOfFloatingResult */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun IntArray.maxOf(selector: (Int) -> Double): Double { if (isEmpty()) throw NoSuchElementException() var maxValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) maxValue = maxOf(maxValue, v) } return maxValue } /** * Returns the largest value among all values produced by [selector] function * applied to each element in the array. * * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`. * * @throws NoSuchElementException if the array is empty. * * @sample samples.collections.Collections.Aggregates.maxOfMinOfFloatingResult */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun LongArray.maxOf(selector: (Long) -> Double): Double { if (isEmpty()) throw NoSuchElementException() var maxValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) maxValue = maxOf(maxValue, v) } return maxValue } /** * Returns the largest value among all values produced by [selector] function * applied to each element in the array. * * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`. * * @throws NoSuchElementException if the array is empty. * * @sample samples.collections.Collections.Aggregates.maxOfMinOfFloatingResult */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun FloatArray.maxOf(selector: (Float) -> Double): Double { if (isEmpty()) throw NoSuchElementException() var maxValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) maxValue = maxOf(maxValue, v) } return maxValue } /** * Returns the largest value among all values produced by [selector] function * applied to each element in the array. * * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`. * * @throws NoSuchElementException if the array is empty. * * @sample samples.collections.Collections.Aggregates.maxOfMinOfFloatingResult */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun DoubleArray.maxOf(selector: (Double) -> Double): Double { if (isEmpty()) throw NoSuchElementException() var maxValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) maxValue = maxOf(maxValue, v) } return maxValue } /** * Returns the largest value among all values produced by [selector] function * applied to each element in the array. * * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`. * * @throws NoSuchElementException if the array is empty. * * @sample samples.collections.Collections.Aggregates.maxOfMinOfFloatingResult */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun BooleanArray.maxOf(selector: (Boolean) -> Double): Double { if (isEmpty()) throw NoSuchElementException() var maxValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) maxValue = maxOf(maxValue, v) } return maxValue } /** * Returns the largest value among all values produced by [selector] function * applied to each element in the array. * * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`. * * @throws NoSuchElementException if the array is empty. * * @sample samples.collections.Collections.Aggregates.maxOfMinOfFloatingResult */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun CharArray.maxOf(selector: (Char) -> Double): Double { if (isEmpty()) throw NoSuchElementException() var maxValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) maxValue = maxOf(maxValue, v) } return maxValue } /** * Returns the largest value among all values produced by [selector] function * applied to each element in the array. * * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`. * * @throws NoSuchElementException if the array is empty. * * @sample samples.collections.Collections.Aggregates.maxOfMinOfFloatingResult */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun Array.maxOf(selector: (T) -> Float): Float { if (isEmpty()) throw NoSuchElementException() var maxValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) maxValue = maxOf(maxValue, v) } return maxValue } /** * Returns the largest value among all values produced by [selector] function * applied to each element in the array. * * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`. * * @throws NoSuchElementException if the array is empty. * * @sample samples.collections.Collections.Aggregates.maxOfMinOfFloatingResult */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun ByteArray.maxOf(selector: (Byte) -> Float): Float { if (isEmpty()) throw NoSuchElementException() var maxValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) maxValue = maxOf(maxValue, v) } return maxValue } /** * Returns the largest value among all values produced by [selector] function * applied to each element in the array. * * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`. * * @throws NoSuchElementException if the array is empty. * * @sample samples.collections.Collections.Aggregates.maxOfMinOfFloatingResult */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun ShortArray.maxOf(selector: (Short) -> Float): Float { if (isEmpty()) throw NoSuchElementException() var maxValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) maxValue = maxOf(maxValue, v) } return maxValue } /** * Returns the largest value among all values produced by [selector] function * applied to each element in the array. * * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`. * * @throws NoSuchElementException if the array is empty. * * @sample samples.collections.Collections.Aggregates.maxOfMinOfFloatingResult */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun IntArray.maxOf(selector: (Int) -> Float): Float { if (isEmpty()) throw NoSuchElementException() var maxValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) maxValue = maxOf(maxValue, v) } return maxValue } /** * Returns the largest value among all values produced by [selector] function * applied to each element in the array. * * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`. * * @throws NoSuchElementException if the array is empty. * * @sample samples.collections.Collections.Aggregates.maxOfMinOfFloatingResult */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun LongArray.maxOf(selector: (Long) -> Float): Float { if (isEmpty()) throw NoSuchElementException() var maxValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) maxValue = maxOf(maxValue, v) } return maxValue } /** * Returns the largest value among all values produced by [selector] function * applied to each element in the array. * * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`. * * @throws NoSuchElementException if the array is empty. * * @sample samples.collections.Collections.Aggregates.maxOfMinOfFloatingResult */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun FloatArray.maxOf(selector: (Float) -> Float): Float { if (isEmpty()) throw NoSuchElementException() var maxValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) maxValue = maxOf(maxValue, v) } return maxValue } /** * Returns the largest value among all values produced by [selector] function * applied to each element in the array. * * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`. * * @throws NoSuchElementException if the array is empty. * * @sample samples.collections.Collections.Aggregates.maxOfMinOfFloatingResult */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun DoubleArray.maxOf(selector: (Double) -> Float): Float { if (isEmpty()) throw NoSuchElementException() var maxValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) maxValue = maxOf(maxValue, v) } return maxValue } /** * Returns the largest value among all values produced by [selector] function * applied to each element in the array. * * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`. * * @throws NoSuchElementException if the array is empty. * * @sample samples.collections.Collections.Aggregates.maxOfMinOfFloatingResult */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun BooleanArray.maxOf(selector: (Boolean) -> Float): Float { if (isEmpty()) throw NoSuchElementException() var maxValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) maxValue = maxOf(maxValue, v) } return maxValue } /** * Returns the largest value among all values produced by [selector] function * applied to each element in the array. * * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`. * * @throws NoSuchElementException if the array is empty. * * @sample samples.collections.Collections.Aggregates.maxOfMinOfFloatingResult */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun CharArray.maxOf(selector: (Char) -> Float): Float { if (isEmpty()) throw NoSuchElementException() var maxValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) maxValue = maxOf(maxValue, v) } return maxValue } /** * Returns the largest value among all values produced by [selector] function * applied to each element in the array. * * If multiple elements produce the maximal value, this function returns the first of those values. * * @throws NoSuchElementException if the array is empty. * * @sample samples.collections.Collections.Aggregates.maxOfMinOfGeneric */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun > Array.maxOf(selector: (T) -> R): R { if (isEmpty()) throw NoSuchElementException() var maxValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) if (maxValue < v) { maxValue = v } } return maxValue } /** * Returns the largest value among all values produced by [selector] function * applied to each element in the array. * * If multiple elements produce the maximal value, this function returns the first of those values. * * @throws NoSuchElementException if the array is empty. * * @sample samples.collections.Collections.Aggregates.maxOfMinOfPrimitive */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun > ByteArray.maxOf(selector: (Byte) -> R): R { if (isEmpty()) throw NoSuchElementException() var maxValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) if (maxValue < v) { maxValue = v } } return maxValue } /** * Returns the largest value among all values produced by [selector] function * applied to each element in the array. * * If multiple elements produce the maximal value, this function returns the first of those values. * * @throws NoSuchElementException if the array is empty. * * @sample samples.collections.Collections.Aggregates.maxOfMinOfPrimitive */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun > ShortArray.maxOf(selector: (Short) -> R): R { if (isEmpty()) throw NoSuchElementException() var maxValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) if (maxValue < v) { maxValue = v } } return maxValue } /** * Returns the largest value among all values produced by [selector] function * applied to each element in the array. * * If multiple elements produce the maximal value, this function returns the first of those values. * * @throws NoSuchElementException if the array is empty. * * @sample samples.collections.Collections.Aggregates.maxOfMinOfPrimitive */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun > IntArray.maxOf(selector: (Int) -> R): R { if (isEmpty()) throw NoSuchElementException() var maxValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) if (maxValue < v) { maxValue = v } } return maxValue } /** * Returns the largest value among all values produced by [selector] function * applied to each element in the array. * * If multiple elements produce the maximal value, this function returns the first of those values. * * @throws NoSuchElementException if the array is empty. * * @sample samples.collections.Collections.Aggregates.maxOfMinOfPrimitive */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun > LongArray.maxOf(selector: (Long) -> R): R { if (isEmpty()) throw NoSuchElementException() var maxValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) if (maxValue < v) { maxValue = v } } return maxValue } /** * Returns the largest value among all values produced by [selector] function * applied to each element in the array. * * If multiple elements produce the maximal value, this function returns the first of those values. * * @throws NoSuchElementException if the array is empty. * * @sample samples.collections.Collections.Aggregates.maxOfMinOfPrimitive */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun > FloatArray.maxOf(selector: (Float) -> R): R { if (isEmpty()) throw NoSuchElementException() var maxValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) if (maxValue < v) { maxValue = v } } return maxValue } /** * Returns the largest value among all values produced by [selector] function * applied to each element in the array. * * If multiple elements produce the maximal value, this function returns the first of those values. * * @throws NoSuchElementException if the array is empty. * * @sample samples.collections.Collections.Aggregates.maxOfMinOfPrimitive */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun > DoubleArray.maxOf(selector: (Double) -> R): R { if (isEmpty()) throw NoSuchElementException() var maxValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) if (maxValue < v) { maxValue = v } } return maxValue } /** * Returns the largest value among all values produced by [selector] function * applied to each element in the array. * * If multiple elements produce the maximal value, this function returns the first of those values. * * @throws NoSuchElementException if the array is empty. * * @sample samples.collections.Collections.Aggregates.maxOfMinOfPrimitive */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun > BooleanArray.maxOf(selector: (Boolean) -> R): R { if (isEmpty()) throw NoSuchElementException() var maxValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) if (maxValue < v) { maxValue = v } } return maxValue } /** * Returns the largest value among all values produced by [selector] function * applied to each element in the array. * * If multiple elements produce the maximal value, this function returns the first of those values. * * @throws NoSuchElementException if the array is empty. * * @sample samples.collections.Collections.Aggregates.maxOfMinOfPrimitive */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun > CharArray.maxOf(selector: (Char) -> R): R { if (isEmpty()) throw NoSuchElementException() var maxValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) if (maxValue < v) { maxValue = v } } return maxValue } /** * Returns the largest value among all values produced by [selector] function * applied to each element in the array or `null` if the array is empty. * * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`. * * @sample samples.collections.Collections.Aggregates.maxOfMinOfFloatingResult */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun Array.maxOfOrNull(selector: (T) -> Double): Double? { if (isEmpty()) return null var maxValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) maxValue = maxOf(maxValue, v) } return maxValue } /** * Returns the largest value among all values produced by [selector] function * applied to each element in the array or `null` if the array is empty. * * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`. * * @sample samples.collections.Collections.Aggregates.maxOfMinOfFloatingResult */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun ByteArray.maxOfOrNull(selector: (Byte) -> Double): Double? { if (isEmpty()) return null var maxValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) maxValue = maxOf(maxValue, v) } return maxValue } /** * Returns the largest value among all values produced by [selector] function * applied to each element in the array or `null` if the array is empty. * * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`. * * @sample samples.collections.Collections.Aggregates.maxOfMinOfFloatingResult */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun ShortArray.maxOfOrNull(selector: (Short) -> Double): Double? { if (isEmpty()) return null var maxValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) maxValue = maxOf(maxValue, v) } return maxValue } /** * Returns the largest value among all values produced by [selector] function * applied to each element in the array or `null` if the array is empty. * * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`. * * @sample samples.collections.Collections.Aggregates.maxOfMinOfFloatingResult */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun IntArray.maxOfOrNull(selector: (Int) -> Double): Double? { if (isEmpty()) return null var maxValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) maxValue = maxOf(maxValue, v) } return maxValue } /** * Returns the largest value among all values produced by [selector] function * applied to each element in the array or `null` if the array is empty. * * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`. * * @sample samples.collections.Collections.Aggregates.maxOfMinOfFloatingResult */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun LongArray.maxOfOrNull(selector: (Long) -> Double): Double? { if (isEmpty()) return null var maxValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) maxValue = maxOf(maxValue, v) } return maxValue } /** * Returns the largest value among all values produced by [selector] function * applied to each element in the array or `null` if the array is empty. * * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`. * * @sample samples.collections.Collections.Aggregates.maxOfMinOfFloatingResult */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun FloatArray.maxOfOrNull(selector: (Float) -> Double): Double? { if (isEmpty()) return null var maxValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) maxValue = maxOf(maxValue, v) } return maxValue } /** * Returns the largest value among all values produced by [selector] function * applied to each element in the array or `null` if the array is empty. * * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`. * * @sample samples.collections.Collections.Aggregates.maxOfMinOfFloatingResult */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun DoubleArray.maxOfOrNull(selector: (Double) -> Double): Double? { if (isEmpty()) return null var maxValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) maxValue = maxOf(maxValue, v) } return maxValue } /** * Returns the largest value among all values produced by [selector] function * applied to each element in the array or `null` if the array is empty. * * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`. * * @sample samples.collections.Collections.Aggregates.maxOfMinOfFloatingResult */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun BooleanArray.maxOfOrNull(selector: (Boolean) -> Double): Double? { if (isEmpty()) return null var maxValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) maxValue = maxOf(maxValue, v) } return maxValue } /** * Returns the largest value among all values produced by [selector] function * applied to each element in the array or `null` if the array is empty. * * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`. * * @sample samples.collections.Collections.Aggregates.maxOfMinOfFloatingResult */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun CharArray.maxOfOrNull(selector: (Char) -> Double): Double? { if (isEmpty()) return null var maxValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) maxValue = maxOf(maxValue, v) } return maxValue } /** * Returns the largest value among all values produced by [selector] function * applied to each element in the array or `null` if the array is empty. * * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`. * * @sample samples.collections.Collections.Aggregates.maxOfMinOfFloatingResult */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun Array.maxOfOrNull(selector: (T) -> Float): Float? { if (isEmpty()) return null var maxValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) maxValue = maxOf(maxValue, v) } return maxValue } /** * Returns the largest value among all values produced by [selector] function * applied to each element in the array or `null` if the array is empty. * * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`. * * @sample samples.collections.Collections.Aggregates.maxOfMinOfFloatingResult */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun ByteArray.maxOfOrNull(selector: (Byte) -> Float): Float? { if (isEmpty()) return null var maxValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) maxValue = maxOf(maxValue, v) } return maxValue } /** * Returns the largest value among all values produced by [selector] function * applied to each element in the array or `null` if the array is empty. * * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`. * * @sample samples.collections.Collections.Aggregates.maxOfMinOfFloatingResult */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun ShortArray.maxOfOrNull(selector: (Short) -> Float): Float? { if (isEmpty()) return null var maxValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) maxValue = maxOf(maxValue, v) } return maxValue } /** * Returns the largest value among all values produced by [selector] function * applied to each element in the array or `null` if the array is empty. * * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`. * * @sample samples.collections.Collections.Aggregates.maxOfMinOfFloatingResult */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun IntArray.maxOfOrNull(selector: (Int) -> Float): Float? { if (isEmpty()) return null var maxValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) maxValue = maxOf(maxValue, v) } return maxValue } /** * Returns the largest value among all values produced by [selector] function * applied to each element in the array or `null` if the array is empty. * * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`. * * @sample samples.collections.Collections.Aggregates.maxOfMinOfFloatingResult */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun LongArray.maxOfOrNull(selector: (Long) -> Float): Float? { if (isEmpty()) return null var maxValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) maxValue = maxOf(maxValue, v) } return maxValue } /** * Returns the largest value among all values produced by [selector] function * applied to each element in the array or `null` if the array is empty. * * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`. * * @sample samples.collections.Collections.Aggregates.maxOfMinOfFloatingResult */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun FloatArray.maxOfOrNull(selector: (Float) -> Float): Float? { if (isEmpty()) return null var maxValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) maxValue = maxOf(maxValue, v) } return maxValue } /** * Returns the largest value among all values produced by [selector] function * applied to each element in the array or `null` if the array is empty. * * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`. * * @sample samples.collections.Collections.Aggregates.maxOfMinOfFloatingResult */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun DoubleArray.maxOfOrNull(selector: (Double) -> Float): Float? { if (isEmpty()) return null var maxValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) maxValue = maxOf(maxValue, v) } return maxValue } /** * Returns the largest value among all values produced by [selector] function * applied to each element in the array or `null` if the array is empty. * * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`. * * @sample samples.collections.Collections.Aggregates.maxOfMinOfFloatingResult */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun BooleanArray.maxOfOrNull(selector: (Boolean) -> Float): Float? { if (isEmpty()) return null var maxValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) maxValue = maxOf(maxValue, v) } return maxValue } /** * Returns the largest value among all values produced by [selector] function * applied to each element in the array or `null` if the array is empty. * * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`. * * @sample samples.collections.Collections.Aggregates.maxOfMinOfFloatingResult */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun CharArray.maxOfOrNull(selector: (Char) -> Float): Float? { if (isEmpty()) return null var maxValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) maxValue = maxOf(maxValue, v) } return maxValue } /** * Returns the largest value among all values produced by [selector] function * applied to each element in the array or `null` if the array is empty. * * If multiple elements produce the maximal value, this function returns the first of those values. * * @sample samples.collections.Collections.Aggregates.maxOfMinOfGeneric */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun > Array.maxOfOrNull(selector: (T) -> R): R? { if (isEmpty()) return null var maxValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) if (maxValue < v) { maxValue = v } } return maxValue } /** * Returns the largest value among all values produced by [selector] function * applied to each element in the array or `null` if the array is empty. * * If multiple elements produce the maximal value, this function returns the first of those values. * * @sample samples.collections.Collections.Aggregates.maxOfMinOfPrimitive */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun > ByteArray.maxOfOrNull(selector: (Byte) -> R): R? { if (isEmpty()) return null var maxValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) if (maxValue < v) { maxValue = v } } return maxValue } /** * Returns the largest value among all values produced by [selector] function * applied to each element in the array or `null` if the array is empty. * * If multiple elements produce the maximal value, this function returns the first of those values. * * @sample samples.collections.Collections.Aggregates.maxOfMinOfPrimitive */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun > ShortArray.maxOfOrNull(selector: (Short) -> R): R? { if (isEmpty()) return null var maxValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) if (maxValue < v) { maxValue = v } } return maxValue } /** * Returns the largest value among all values produced by [selector] function * applied to each element in the array or `null` if the array is empty. * * If multiple elements produce the maximal value, this function returns the first of those values. * * @sample samples.collections.Collections.Aggregates.maxOfMinOfPrimitive */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun > IntArray.maxOfOrNull(selector: (Int) -> R): R? { if (isEmpty()) return null var maxValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) if (maxValue < v) { maxValue = v } } return maxValue } /** * Returns the largest value among all values produced by [selector] function * applied to each element in the array or `null` if the array is empty. * * If multiple elements produce the maximal value, this function returns the first of those values. * * @sample samples.collections.Collections.Aggregates.maxOfMinOfPrimitive */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun > LongArray.maxOfOrNull(selector: (Long) -> R): R? { if (isEmpty()) return null var maxValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) if (maxValue < v) { maxValue = v } } return maxValue } /** * Returns the largest value among all values produced by [selector] function * applied to each element in the array or `null` if the array is empty. * * If multiple elements produce the maximal value, this function returns the first of those values. * * @sample samples.collections.Collections.Aggregates.maxOfMinOfPrimitive */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun > FloatArray.maxOfOrNull(selector: (Float) -> R): R? { if (isEmpty()) return null var maxValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) if (maxValue < v) { maxValue = v } } return maxValue } /** * Returns the largest value among all values produced by [selector] function * applied to each element in the array or `null` if the array is empty. * * If multiple elements produce the maximal value, this function returns the first of those values. * * @sample samples.collections.Collections.Aggregates.maxOfMinOfPrimitive */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun > DoubleArray.maxOfOrNull(selector: (Double) -> R): R? { if (isEmpty()) return null var maxValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) if (maxValue < v) { maxValue = v } } return maxValue } /** * Returns the largest value among all values produced by [selector] function * applied to each element in the array or `null` if the array is empty. * * If multiple elements produce the maximal value, this function returns the first of those values. * * @sample samples.collections.Collections.Aggregates.maxOfMinOfPrimitive */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun > BooleanArray.maxOfOrNull(selector: (Boolean) -> R): R? { if (isEmpty()) return null var maxValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) if (maxValue < v) { maxValue = v } } return maxValue } /** * Returns the largest value among all values produced by [selector] function * applied to each element in the array or `null` if the array is empty. * * If multiple elements produce the maximal value, this function returns the first of those values. * * @sample samples.collections.Collections.Aggregates.maxOfMinOfPrimitive */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun > CharArray.maxOfOrNull(selector: (Char) -> R): R? { if (isEmpty()) return null var maxValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) if (maxValue < v) { maxValue = v } } return maxValue } /** * Returns the largest value according to the provided [comparator] * among all values produced by [selector] function applied to each element in the array. * * If multiple elements produce the maximal value, this function returns the first of those values. * * @throws NoSuchElementException if the array is empty. * * @sample samples.collections.Collections.Aggregates.maxOfWithMinOfWithGeneric */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun Array.maxOfWith(comparator: Comparator, selector: (T) -> R): R { if (isEmpty()) throw NoSuchElementException() var maxValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) if (comparator.compare(maxValue, v) < 0) { maxValue = v } } return maxValue } /** * Returns the largest value according to the provided [comparator] * among all values produced by [selector] function applied to each element in the array. * * If multiple elements produce the maximal value, this function returns the first of those values. * * @throws NoSuchElementException if the array is empty. * * @sample samples.collections.Collections.Aggregates.maxOfWithMinOfWithPrimitive */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun ByteArray.maxOfWith(comparator: Comparator, selector: (Byte) -> R): R { if (isEmpty()) throw NoSuchElementException() var maxValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) if (comparator.compare(maxValue, v) < 0) { maxValue = v } } return maxValue } /** * Returns the largest value according to the provided [comparator] * among all values produced by [selector] function applied to each element in the array. * * If multiple elements produce the maximal value, this function returns the first of those values. * * @throws NoSuchElementException if the array is empty. * * @sample samples.collections.Collections.Aggregates.maxOfWithMinOfWithPrimitive */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun ShortArray.maxOfWith(comparator: Comparator, selector: (Short) -> R): R { if (isEmpty()) throw NoSuchElementException() var maxValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) if (comparator.compare(maxValue, v) < 0) { maxValue = v } } return maxValue } /** * Returns the largest value according to the provided [comparator] * among all values produced by [selector] function applied to each element in the array. * * If multiple elements produce the maximal value, this function returns the first of those values. * * @throws NoSuchElementException if the array is empty. * * @sample samples.collections.Collections.Aggregates.maxOfWithMinOfWithPrimitive */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun IntArray.maxOfWith(comparator: Comparator, selector: (Int) -> R): R { if (isEmpty()) throw NoSuchElementException() var maxValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) if (comparator.compare(maxValue, v) < 0) { maxValue = v } } return maxValue } /** * Returns the largest value according to the provided [comparator] * among all values produced by [selector] function applied to each element in the array. * * If multiple elements produce the maximal value, this function returns the first of those values. * * @throws NoSuchElementException if the array is empty. * * @sample samples.collections.Collections.Aggregates.maxOfWithMinOfWithPrimitive */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun LongArray.maxOfWith(comparator: Comparator, selector: (Long) -> R): R { if (isEmpty()) throw NoSuchElementException() var maxValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) if (comparator.compare(maxValue, v) < 0) { maxValue = v } } return maxValue } /** * Returns the largest value according to the provided [comparator] * among all values produced by [selector] function applied to each element in the array. * * If multiple elements produce the maximal value, this function returns the first of those values. * * @throws NoSuchElementException if the array is empty. * * @sample samples.collections.Collections.Aggregates.maxOfWithMinOfWithPrimitive */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun FloatArray.maxOfWith(comparator: Comparator, selector: (Float) -> R): R { if (isEmpty()) throw NoSuchElementException() var maxValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) if (comparator.compare(maxValue, v) < 0) { maxValue = v } } return maxValue } /** * Returns the largest value according to the provided [comparator] * among all values produced by [selector] function applied to each element in the array. * * If multiple elements produce the maximal value, this function returns the first of those values. * * @throws NoSuchElementException if the array is empty. * * @sample samples.collections.Collections.Aggregates.maxOfWithMinOfWithPrimitive */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun DoubleArray.maxOfWith(comparator: Comparator, selector: (Double) -> R): R { if (isEmpty()) throw NoSuchElementException() var maxValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) if (comparator.compare(maxValue, v) < 0) { maxValue = v } } return maxValue } /** * Returns the largest value according to the provided [comparator] * among all values produced by [selector] function applied to each element in the array. * * If multiple elements produce the maximal value, this function returns the first of those values. * * @throws NoSuchElementException if the array is empty. * * @sample samples.collections.Collections.Aggregates.maxOfWithMinOfWithPrimitive */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun BooleanArray.maxOfWith(comparator: Comparator, selector: (Boolean) -> R): R { if (isEmpty()) throw NoSuchElementException() var maxValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) if (comparator.compare(maxValue, v) < 0) { maxValue = v } } return maxValue } /** * Returns the largest value according to the provided [comparator] * among all values produced by [selector] function applied to each element in the array. * * If multiple elements produce the maximal value, this function returns the first of those values. * * @throws NoSuchElementException if the array is empty. * * @sample samples.collections.Collections.Aggregates.maxOfWithMinOfWithPrimitive */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun CharArray.maxOfWith(comparator: Comparator, selector: (Char) -> R): R { if (isEmpty()) throw NoSuchElementException() var maxValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) if (comparator.compare(maxValue, v) < 0) { maxValue = v } } return maxValue } /** * Returns the largest value according to the provided [comparator] * among all values produced by [selector] function applied to each element in the array or `null` if the array is empty. * * If multiple elements produce the maximal value, this function returns the first of those values. * * @sample samples.collections.Collections.Aggregates.maxOfWithMinOfWithGeneric */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun Array.maxOfWithOrNull(comparator: Comparator, selector: (T) -> R): R? { if (isEmpty()) return null var maxValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) if (comparator.compare(maxValue, v) < 0) { maxValue = v } } return maxValue } /** * Returns the largest value according to the provided [comparator] * among all values produced by [selector] function applied to each element in the array or `null` if the array is empty. * * If multiple elements produce the maximal value, this function returns the first of those values. * * @sample samples.collections.Collections.Aggregates.maxOfWithMinOfWithPrimitive */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun ByteArray.maxOfWithOrNull(comparator: Comparator, selector: (Byte) -> R): R? { if (isEmpty()) return null var maxValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) if (comparator.compare(maxValue, v) < 0) { maxValue = v } } return maxValue } /** * Returns the largest value according to the provided [comparator] * among all values produced by [selector] function applied to each element in the array or `null` if the array is empty. * * If multiple elements produce the maximal value, this function returns the first of those values. * * @sample samples.collections.Collections.Aggregates.maxOfWithMinOfWithPrimitive */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun ShortArray.maxOfWithOrNull(comparator: Comparator, selector: (Short) -> R): R? { if (isEmpty()) return null var maxValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) if (comparator.compare(maxValue, v) < 0) { maxValue = v } } return maxValue } /** * Returns the largest value according to the provided [comparator] * among all values produced by [selector] function applied to each element in the array or `null` if the array is empty. * * If multiple elements produce the maximal value, this function returns the first of those values. * * @sample samples.collections.Collections.Aggregates.maxOfWithMinOfWithPrimitive */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun IntArray.maxOfWithOrNull(comparator: Comparator, selector: (Int) -> R): R? { if (isEmpty()) return null var maxValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) if (comparator.compare(maxValue, v) < 0) { maxValue = v } } return maxValue } /** * Returns the largest value according to the provided [comparator] * among all values produced by [selector] function applied to each element in the array or `null` if the array is empty. * * If multiple elements produce the maximal value, this function returns the first of those values. * * @sample samples.collections.Collections.Aggregates.maxOfWithMinOfWithPrimitive */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun LongArray.maxOfWithOrNull(comparator: Comparator, selector: (Long) -> R): R? { if (isEmpty()) return null var maxValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) if (comparator.compare(maxValue, v) < 0) { maxValue = v } } return maxValue } /** * Returns the largest value according to the provided [comparator] * among all values produced by [selector] function applied to each element in the array or `null` if the array is empty. * * If multiple elements produce the maximal value, this function returns the first of those values. * * @sample samples.collections.Collections.Aggregates.maxOfWithMinOfWithPrimitive */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun FloatArray.maxOfWithOrNull(comparator: Comparator, selector: (Float) -> R): R? { if (isEmpty()) return null var maxValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) if (comparator.compare(maxValue, v) < 0) { maxValue = v } } return maxValue } /** * Returns the largest value according to the provided [comparator] * among all values produced by [selector] function applied to each element in the array or `null` if the array is empty. * * If multiple elements produce the maximal value, this function returns the first of those values. * * @sample samples.collections.Collections.Aggregates.maxOfWithMinOfWithPrimitive */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun DoubleArray.maxOfWithOrNull(comparator: Comparator, selector: (Double) -> R): R? { if (isEmpty()) return null var maxValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) if (comparator.compare(maxValue, v) < 0) { maxValue = v } } return maxValue } /** * Returns the largest value according to the provided [comparator] * among all values produced by [selector] function applied to each element in the array or `null` if the array is empty. * * If multiple elements produce the maximal value, this function returns the first of those values. * * @sample samples.collections.Collections.Aggregates.maxOfWithMinOfWithPrimitive */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun BooleanArray.maxOfWithOrNull(comparator: Comparator, selector: (Boolean) -> R): R? { if (isEmpty()) return null var maxValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) if (comparator.compare(maxValue, v) < 0) { maxValue = v } } return maxValue } /** * Returns the largest value according to the provided [comparator] * among all values produced by [selector] function applied to each element in the array or `null` if the array is empty. * * If multiple elements produce the maximal value, this function returns the first of those values. * * @sample samples.collections.Collections.Aggregates.maxOfWithMinOfWithPrimitive */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun CharArray.maxOfWithOrNull(comparator: Comparator, selector: (Char) -> R): R? { if (isEmpty()) return null var maxValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) if (comparator.compare(maxValue, v) < 0) { maxValue = v } } return maxValue } /** * Returns the largest element or `null` if the array is empty. * * If any of elements is `NaN`, this function returns `NaN`. * * @sample samples.collections.Collections.Aggregates.maxMinFloating */ @SinceKotlin("1.4") public fun Array.maxOrNull(): Double? { if (isEmpty()) return null var max = this[0] for (i in 1..lastIndex) { val e = this[i] max = maxOf(max, e) } return max } /** * Returns the largest element or `null` if the array is empty. * * If any of elements is `NaN`, this function returns `NaN`. * * @sample samples.collections.Collections.Aggregates.maxMinFloating */ @SinceKotlin("1.4") public fun Array.maxOrNull(): Float? { if (isEmpty()) return null var max = this[0] for (i in 1..lastIndex) { val e = this[i] max = maxOf(max, e) } return max } /** * Returns the largest element or `null` if the array is empty. * * If there are multiple equal maximal elements, this function returns the first of those elements. * * @sample samples.collections.Collections.Aggregates.maxMinGeneric */ @SinceKotlin("1.4") public fun > Array.maxOrNull(): T? { if (isEmpty()) return null var max = this[0] for (i in 1..lastIndex) { val e = this[i] if (max < e) max = e } return max } /** * Returns the largest element or `null` if the array is empty. * * @sample samples.collections.Collections.Aggregates.maxMinPrimitive */ @SinceKotlin("1.4") public fun ByteArray.maxOrNull(): Byte? { if (isEmpty()) return null var max = this[0] for (i in 1..lastIndex) { val e = this[i] if (max < e) max = e } return max } /** * Returns the largest element or `null` if the array is empty. * * @sample samples.collections.Collections.Aggregates.maxMinPrimitive */ @SinceKotlin("1.4") public fun ShortArray.maxOrNull(): Short? { if (isEmpty()) return null var max = this[0] for (i in 1..lastIndex) { val e = this[i] if (max < e) max = e } return max } /** * Returns the largest element or `null` if the array is empty. * * @sample samples.collections.Collections.Aggregates.maxMinPrimitive */ @SinceKotlin("1.4") public fun IntArray.maxOrNull(): Int? { if (isEmpty()) return null var max = this[0] for (i in 1..lastIndex) { val e = this[i] if (max < e) max = e } return max } /** * Returns the largest element or `null` if the array is empty. * * @sample samples.collections.Collections.Aggregates.maxMinPrimitive */ @SinceKotlin("1.4") public fun LongArray.maxOrNull(): Long? { if (isEmpty()) return null var max = this[0] for (i in 1..lastIndex) { val e = this[i] if (max < e) max = e } return max } /** * Returns the largest element or `null` if the array is empty. * * If any of elements is `NaN`, this function returns `NaN`. * * @sample samples.collections.Collections.Aggregates.maxMinFloating */ @SinceKotlin("1.4") public fun FloatArray.maxOrNull(): Float? { if (isEmpty()) return null var max = this[0] for (i in 1..lastIndex) { val e = this[i] max = maxOf(max, e) } return max } /** * Returns the largest element or `null` if the array is empty. * * If any of elements is `NaN`, this function returns `NaN`. * * @sample samples.collections.Collections.Aggregates.maxMinFloating */ @SinceKotlin("1.4") public fun DoubleArray.maxOrNull(): Double? { if (isEmpty()) return null var max = this[0] for (i in 1..lastIndex) { val e = this[i] max = maxOf(max, e) } return max } /** * Returns the largest element or `null` if the array is empty. * * @sample samples.collections.Collections.Aggregates.maxMinPrimitive */ @SinceKotlin("1.4") public fun CharArray.maxOrNull(): Char? { if (isEmpty()) return null var max = this[0] for (i in 1..lastIndex) { val e = this[i] if (max < e) max = e } return max } /** * Returns the first element having the largest value according to the provided [comparator]. * * @throws NoSuchElementException if the array is empty. */ @SinceKotlin("1.7") @kotlin.jvm.JvmName("maxWithOrThrow") @Suppress("CONFLICTING_OVERLOADS") public fun Array.maxWith(comparator: Comparator): T { if (isEmpty()) throw NoSuchElementException() var max = this[0] for (i in 1..lastIndex) { val e = this[i] if (comparator.compare(max, e) < 0) max = e } return max } /** * Returns the first element having the largest value according to the provided [comparator]. * * @throws NoSuchElementException if the array is empty. */ @SinceKotlin("1.7") @kotlin.jvm.JvmName("maxWithOrThrow") @Suppress("CONFLICTING_OVERLOADS") public fun ByteArray.maxWith(comparator: Comparator): Byte { if (isEmpty()) throw NoSuchElementException() var max = this[0] for (i in 1..lastIndex) { val e = this[i] if (comparator.compare(max, e) < 0) max = e } return max } /** * Returns the first element having the largest value according to the provided [comparator]. * * @throws NoSuchElementException if the array is empty. */ @SinceKotlin("1.7") @kotlin.jvm.JvmName("maxWithOrThrow") @Suppress("CONFLICTING_OVERLOADS") public fun ShortArray.maxWith(comparator: Comparator): Short { if (isEmpty()) throw NoSuchElementException() var max = this[0] for (i in 1..lastIndex) { val e = this[i] if (comparator.compare(max, e) < 0) max = e } return max } /** * Returns the first element having the largest value according to the provided [comparator]. * * @throws NoSuchElementException if the array is empty. */ @SinceKotlin("1.7") @kotlin.jvm.JvmName("maxWithOrThrow") @Suppress("CONFLICTING_OVERLOADS") public fun IntArray.maxWith(comparator: Comparator): Int { if (isEmpty()) throw NoSuchElementException() var max = this[0] for (i in 1..lastIndex) { val e = this[i] if (comparator.compare(max, e) < 0) max = e } return max } /** * Returns the first element having the largest value according to the provided [comparator]. * * @throws NoSuchElementException if the array is empty. */ @SinceKotlin("1.7") @kotlin.jvm.JvmName("maxWithOrThrow") @Suppress("CONFLICTING_OVERLOADS") public fun LongArray.maxWith(comparator: Comparator): Long { if (isEmpty()) throw NoSuchElementException() var max = this[0] for (i in 1..lastIndex) { val e = this[i] if (comparator.compare(max, e) < 0) max = e } return max } /** * Returns the first element having the largest value according to the provided [comparator]. * * @throws NoSuchElementException if the array is empty. */ @SinceKotlin("1.7") @kotlin.jvm.JvmName("maxWithOrThrow") @Suppress("CONFLICTING_OVERLOADS") public fun FloatArray.maxWith(comparator: Comparator): Float { if (isEmpty()) throw NoSuchElementException() var max = this[0] for (i in 1..lastIndex) { val e = this[i] if (comparator.compare(max, e) < 0) max = e } return max } /** * Returns the first element having the largest value according to the provided [comparator]. * * @throws NoSuchElementException if the array is empty. */ @SinceKotlin("1.7") @kotlin.jvm.JvmName("maxWithOrThrow") @Suppress("CONFLICTING_OVERLOADS") public fun DoubleArray.maxWith(comparator: Comparator): Double { if (isEmpty()) throw NoSuchElementException() var max = this[0] for (i in 1..lastIndex) { val e = this[i] if (comparator.compare(max, e) < 0) max = e } return max } /** * Returns the first element having the largest value according to the provided [comparator]. * * @throws NoSuchElementException if the array is empty. */ @SinceKotlin("1.7") @kotlin.jvm.JvmName("maxWithOrThrow") @Suppress("CONFLICTING_OVERLOADS") public fun BooleanArray.maxWith(comparator: Comparator): Boolean { if (isEmpty()) throw NoSuchElementException() var max = this[0] for (i in 1..lastIndex) { val e = this[i] if (comparator.compare(max, e) < 0) max = e } return max } /** * Returns the first element having the largest value according to the provided [comparator]. * * @throws NoSuchElementException if the array is empty. */ @SinceKotlin("1.7") @kotlin.jvm.JvmName("maxWithOrThrow") @Suppress("CONFLICTING_OVERLOADS") public fun CharArray.maxWith(comparator: Comparator): Char { if (isEmpty()) throw NoSuchElementException() var max = this[0] for (i in 1..lastIndex) { val e = this[i] if (comparator.compare(max, e) < 0) max = e } return max } /** * Returns the first element having the largest value according to the provided [comparator] or `null` if there are no elements. */ @SinceKotlin("1.4") public fun Array.maxWithOrNull(comparator: Comparator): T? { if (isEmpty()) return null var max = this[0] for (i in 1..lastIndex) { val e = this[i] if (comparator.compare(max, e) < 0) max = e } return max } /** * Returns the first element having the largest value according to the provided [comparator] or `null` if there are no elements. */ @SinceKotlin("1.4") public fun ByteArray.maxWithOrNull(comparator: Comparator): Byte? { if (isEmpty()) return null var max = this[0] for (i in 1..lastIndex) { val e = this[i] if (comparator.compare(max, e) < 0) max = e } return max } /** * Returns the first element having the largest value according to the provided [comparator] or `null` if there are no elements. */ @SinceKotlin("1.4") public fun ShortArray.maxWithOrNull(comparator: Comparator): Short? { if (isEmpty()) return null var max = this[0] for (i in 1..lastIndex) { val e = this[i] if (comparator.compare(max, e) < 0) max = e } return max } /** * Returns the first element having the largest value according to the provided [comparator] or `null` if there are no elements. */ @SinceKotlin("1.4") public fun IntArray.maxWithOrNull(comparator: Comparator): Int? { if (isEmpty()) return null var max = this[0] for (i in 1..lastIndex) { val e = this[i] if (comparator.compare(max, e) < 0) max = e } return max } /** * Returns the first element having the largest value according to the provided [comparator] or `null` if there are no elements. */ @SinceKotlin("1.4") public fun LongArray.maxWithOrNull(comparator: Comparator): Long? { if (isEmpty()) return null var max = this[0] for (i in 1..lastIndex) { val e = this[i] if (comparator.compare(max, e) < 0) max = e } return max } /** * Returns the first element having the largest value according to the provided [comparator] or `null` if there are no elements. */ @SinceKotlin("1.4") public fun FloatArray.maxWithOrNull(comparator: Comparator): Float? { if (isEmpty()) return null var max = this[0] for (i in 1..lastIndex) { val e = this[i] if (comparator.compare(max, e) < 0) max = e } return max } /** * Returns the first element having the largest value according to the provided [comparator] or `null` if there are no elements. */ @SinceKotlin("1.4") public fun DoubleArray.maxWithOrNull(comparator: Comparator): Double? { if (isEmpty()) return null var max = this[0] for (i in 1..lastIndex) { val e = this[i] if (comparator.compare(max, e) < 0) max = e } return max } /** * Returns the first element having the largest value according to the provided [comparator] or `null` if there are no elements. */ @SinceKotlin("1.4") public fun BooleanArray.maxWithOrNull(comparator: Comparator): Boolean? { if (isEmpty()) return null var max = this[0] for (i in 1..lastIndex) { val e = this[i] if (comparator.compare(max, e) < 0) max = e } return max } /** * Returns the first element having the largest value according to the provided [comparator] or `null` if there are no elements. */ @SinceKotlin("1.4") public fun CharArray.maxWithOrNull(comparator: Comparator): Char? { if (isEmpty()) return null var max = this[0] for (i in 1..lastIndex) { val e = this[i] if (comparator.compare(max, e) < 0) max = e } return max } /** * Returns the smallest element. * * If any of elements is `NaN`, this function returns `NaN`. * * @throws NoSuchElementException if the array is empty. * * @sample samples.collections.Collections.Aggregates.maxMinFloating */ @SinceKotlin("1.7") @kotlin.jvm.JvmName("minOrThrow") @Suppress("CONFLICTING_OVERLOADS") public fun Array.min(): Double { if (isEmpty()) throw NoSuchElementException() var min = this[0] for (i in 1..lastIndex) { val e = this[i] min = minOf(min, e) } return min } /** * Returns the smallest element. * * If any of elements is `NaN`, this function returns `NaN`. * * @throws NoSuchElementException if the array is empty. * * @sample samples.collections.Collections.Aggregates.maxMinFloating */ @SinceKotlin("1.7") @kotlin.jvm.JvmName("minOrThrow") @Suppress("CONFLICTING_OVERLOADS") public fun Array.min(): Float { if (isEmpty()) throw NoSuchElementException() var min = this[0] for (i in 1..lastIndex) { val e = this[i] min = minOf(min, e) } return min } /** * Returns the smallest element. * * If there are multiple equal minimal elements, this function returns the first of those elements. * * @throws NoSuchElementException if the array is empty. * * @sample samples.collections.Collections.Aggregates.maxMinGeneric */ @SinceKotlin("1.7") @kotlin.jvm.JvmName("minOrThrow") @Suppress("CONFLICTING_OVERLOADS") public fun > Array.min(): T { if (isEmpty()) throw NoSuchElementException() var min = this[0] for (i in 1..lastIndex) { val e = this[i] if (min > e) min = e } return min } /** * Returns the smallest element. * * @throws NoSuchElementException if the array is empty. * * @sample samples.collections.Collections.Aggregates.maxMinPrimitive */ @SinceKotlin("1.7") @kotlin.jvm.JvmName("minOrThrow") @Suppress("CONFLICTING_OVERLOADS") public fun ByteArray.min(): Byte { if (isEmpty()) throw NoSuchElementException() var min = this[0] for (i in 1..lastIndex) { val e = this[i] if (min > e) min = e } return min } /** * Returns the smallest element. * * @throws NoSuchElementException if the array is empty. * * @sample samples.collections.Collections.Aggregates.maxMinPrimitive */ @SinceKotlin("1.7") @kotlin.jvm.JvmName("minOrThrow") @Suppress("CONFLICTING_OVERLOADS") public fun ShortArray.min(): Short { if (isEmpty()) throw NoSuchElementException() var min = this[0] for (i in 1..lastIndex) { val e = this[i] if (min > e) min = e } return min } /** * Returns the smallest element. * * @throws NoSuchElementException if the array is empty. * * @sample samples.collections.Collections.Aggregates.maxMinPrimitive */ @SinceKotlin("1.7") @kotlin.jvm.JvmName("minOrThrow") @Suppress("CONFLICTING_OVERLOADS") public fun IntArray.min(): Int { if (isEmpty()) throw NoSuchElementException() var min = this[0] for (i in 1..lastIndex) { val e = this[i] if (min > e) min = e } return min } /** * Returns the smallest element. * * @throws NoSuchElementException if the array is empty. * * @sample samples.collections.Collections.Aggregates.maxMinPrimitive */ @SinceKotlin("1.7") @kotlin.jvm.JvmName("minOrThrow") @Suppress("CONFLICTING_OVERLOADS") public fun LongArray.min(): Long { if (isEmpty()) throw NoSuchElementException() var min = this[0] for (i in 1..lastIndex) { val e = this[i] if (min > e) min = e } return min } /** * Returns the smallest element. * * If any of elements is `NaN`, this function returns `NaN`. * * @throws NoSuchElementException if the array is empty. * * @sample samples.collections.Collections.Aggregates.maxMinFloating */ @SinceKotlin("1.7") @kotlin.jvm.JvmName("minOrThrow") @Suppress("CONFLICTING_OVERLOADS") public fun FloatArray.min(): Float { if (isEmpty()) throw NoSuchElementException() var min = this[0] for (i in 1..lastIndex) { val e = this[i] min = minOf(min, e) } return min } /** * Returns the smallest element. * * If any of elements is `NaN`, this function returns `NaN`. * * @throws NoSuchElementException if the array is empty. * * @sample samples.collections.Collections.Aggregates.maxMinFloating */ @SinceKotlin("1.7") @kotlin.jvm.JvmName("minOrThrow") @Suppress("CONFLICTING_OVERLOADS") public fun DoubleArray.min(): Double { if (isEmpty()) throw NoSuchElementException() var min = this[0] for (i in 1..lastIndex) { val e = this[i] min = minOf(min, e) } return min } /** * Returns the smallest element. * * @throws NoSuchElementException if the array is empty. * * @sample samples.collections.Collections.Aggregates.maxMinPrimitive */ @SinceKotlin("1.7") @kotlin.jvm.JvmName("minOrThrow") @Suppress("CONFLICTING_OVERLOADS") public fun CharArray.min(): Char { if (isEmpty()) throw NoSuchElementException() var min = this[0] for (i in 1..lastIndex) { val e = this[i] if (min > e) min = e } return min } /** * Returns the first element yielding the smallest value of the given [selector] function. * * If there are multiple equal minimal values returned by the [selector] function, * this function returns the first of elements corresponding to these values. * * Note that the function [selector] is not invoked when the array contains zero or one elements * because in these cases it is clear which element to return without invoking the [selector]. * Therefore it's recommended to avoid relying on side effects being performed by the [selector] function on each element. * * @throws NoSuchElementException if the array is empty. * * @sample samples.collections.Collections.Aggregates.minMaxByOrNull */ @SinceKotlin("1.7") @kotlin.jvm.JvmName("minByOrThrow") @Suppress("CONFLICTING_OVERLOADS") public inline fun > Array.minBy(selector: (T) -> R): T { if (isEmpty()) throw NoSuchElementException() var minElem = this[0] val lastIndex = this.lastIndex if (lastIndex == 0) return minElem var minValue = selector(minElem) for (i in 1..lastIndex) { val e = this[i] val v = selector(e) if (minValue > v) { minElem = e minValue = v } } return minElem } /** * Returns the first element yielding the smallest value of the given [selector] function. * * If there are multiple equal minimal values returned by the [selector] function, * this function returns the first of elements corresponding to these values. * * Note that the function [selector] is not invoked when the array contains zero or one elements * because in these cases it is clear which element to return without invoking the [selector]. * Therefore it's recommended to avoid relying on side effects being performed by the [selector] function on each element. * * @throws NoSuchElementException if the array is empty. * * @sample samples.collections.Collections.Aggregates.minMaxByOrNull */ @SinceKotlin("1.7") @kotlin.jvm.JvmName("minByOrThrow") @Suppress("CONFLICTING_OVERLOADS") public inline fun > ByteArray.minBy(selector: (Byte) -> R): Byte { if (isEmpty()) throw NoSuchElementException() var minElem = this[0] val lastIndex = this.lastIndex if (lastIndex == 0) return minElem var minValue = selector(minElem) for (i in 1..lastIndex) { val e = this[i] val v = selector(e) if (minValue > v) { minElem = e minValue = v } } return minElem } /** * Returns the first element yielding the smallest value of the given [selector] function. * * If there are multiple equal minimal values returned by the [selector] function, * this function returns the first of elements corresponding to these values. * * Note that the function [selector] is not invoked when the array contains zero or one elements * because in these cases it is clear which element to return without invoking the [selector]. * Therefore it's recommended to avoid relying on side effects being performed by the [selector] function on each element. * * @throws NoSuchElementException if the array is empty. * * @sample samples.collections.Collections.Aggregates.minMaxByOrNull */ @SinceKotlin("1.7") @kotlin.jvm.JvmName("minByOrThrow") @Suppress("CONFLICTING_OVERLOADS") public inline fun > ShortArray.minBy(selector: (Short) -> R): Short { if (isEmpty()) throw NoSuchElementException() var minElem = this[0] val lastIndex = this.lastIndex if (lastIndex == 0) return minElem var minValue = selector(minElem) for (i in 1..lastIndex) { val e = this[i] val v = selector(e) if (minValue > v) { minElem = e minValue = v } } return minElem } /** * Returns the first element yielding the smallest value of the given [selector] function. * * If there are multiple equal minimal values returned by the [selector] function, * this function returns the first of elements corresponding to these values. * * Note that the function [selector] is not invoked when the array contains zero or one elements * because in these cases it is clear which element to return without invoking the [selector]. * Therefore it's recommended to avoid relying on side effects being performed by the [selector] function on each element. * * @throws NoSuchElementException if the array is empty. * * @sample samples.collections.Collections.Aggregates.minMaxByOrNull */ @SinceKotlin("1.7") @kotlin.jvm.JvmName("minByOrThrow") @Suppress("CONFLICTING_OVERLOADS") public inline fun > IntArray.minBy(selector: (Int) -> R): Int { if (isEmpty()) throw NoSuchElementException() var minElem = this[0] val lastIndex = this.lastIndex if (lastIndex == 0) return minElem var minValue = selector(minElem) for (i in 1..lastIndex) { val e = this[i] val v = selector(e) if (minValue > v) { minElem = e minValue = v } } return minElem } /** * Returns the first element yielding the smallest value of the given [selector] function. * * If there are multiple equal minimal values returned by the [selector] function, * this function returns the first of elements corresponding to these values. * * Note that the function [selector] is not invoked when the array contains zero or one elements * because in these cases it is clear which element to return without invoking the [selector]. * Therefore it's recommended to avoid relying on side effects being performed by the [selector] function on each element. * * @throws NoSuchElementException if the array is empty. * * @sample samples.collections.Collections.Aggregates.minMaxByOrNull */ @SinceKotlin("1.7") @kotlin.jvm.JvmName("minByOrThrow") @Suppress("CONFLICTING_OVERLOADS") public inline fun > LongArray.minBy(selector: (Long) -> R): Long { if (isEmpty()) throw NoSuchElementException() var minElem = this[0] val lastIndex = this.lastIndex if (lastIndex == 0) return minElem var minValue = selector(minElem) for (i in 1..lastIndex) { val e = this[i] val v = selector(e) if (minValue > v) { minElem = e minValue = v } } return minElem } /** * Returns the first element yielding the smallest value of the given [selector] function. * * If there are multiple equal minimal values returned by the [selector] function, * this function returns the first of elements corresponding to these values. * * Note that the function [selector] is not invoked when the array contains zero or one elements * because in these cases it is clear which element to return without invoking the [selector]. * Therefore it's recommended to avoid relying on side effects being performed by the [selector] function on each element. * * @throws NoSuchElementException if the array is empty. * * @sample samples.collections.Collections.Aggregates.minMaxByOrNull */ @SinceKotlin("1.7") @kotlin.jvm.JvmName("minByOrThrow") @Suppress("CONFLICTING_OVERLOADS") public inline fun > FloatArray.minBy(selector: (Float) -> R): Float { if (isEmpty()) throw NoSuchElementException() var minElem = this[0] val lastIndex = this.lastIndex if (lastIndex == 0) return minElem var minValue = selector(minElem) for (i in 1..lastIndex) { val e = this[i] val v = selector(e) if (minValue > v) { minElem = e minValue = v } } return minElem } /** * Returns the first element yielding the smallest value of the given [selector] function. * * If there are multiple equal minimal values returned by the [selector] function, * this function returns the first of elements corresponding to these values. * * Note that the function [selector] is not invoked when the array contains zero or one elements * because in these cases it is clear which element to return without invoking the [selector]. * Therefore it's recommended to avoid relying on side effects being performed by the [selector] function on each element. * * @throws NoSuchElementException if the array is empty. * * @sample samples.collections.Collections.Aggregates.minMaxByOrNull */ @SinceKotlin("1.7") @kotlin.jvm.JvmName("minByOrThrow") @Suppress("CONFLICTING_OVERLOADS") public inline fun > DoubleArray.minBy(selector: (Double) -> R): Double { if (isEmpty()) throw NoSuchElementException() var minElem = this[0] val lastIndex = this.lastIndex if (lastIndex == 0) return minElem var minValue = selector(minElem) for (i in 1..lastIndex) { val e = this[i] val v = selector(e) if (minValue > v) { minElem = e minValue = v } } return minElem } /** * Returns the first element yielding the smallest value of the given [selector] function. * * If there are multiple equal minimal values returned by the [selector] function, * this function returns the first of elements corresponding to these values. * * Note that the function [selector] is not invoked when the array contains zero or one elements * because in these cases it is clear which element to return without invoking the [selector]. * Therefore it's recommended to avoid relying on side effects being performed by the [selector] function on each element. * * @throws NoSuchElementException if the array is empty. * * @sample samples.collections.Collections.Aggregates.minMaxByOrNull */ @SinceKotlin("1.7") @kotlin.jvm.JvmName("minByOrThrow") @Suppress("CONFLICTING_OVERLOADS") public inline fun > BooleanArray.minBy(selector: (Boolean) -> R): Boolean { if (isEmpty()) throw NoSuchElementException() var minElem = this[0] val lastIndex = this.lastIndex if (lastIndex == 0) return minElem var minValue = selector(minElem) for (i in 1..lastIndex) { val e = this[i] val v = selector(e) if (minValue > v) { minElem = e minValue = v } } return minElem } /** * Returns the first element yielding the smallest value of the given [selector] function. * * If there are multiple equal minimal values returned by the [selector] function, * this function returns the first of elements corresponding to these values. * * Note that the function [selector] is not invoked when the array contains zero or one elements * because in these cases it is clear which element to return without invoking the [selector]. * Therefore it's recommended to avoid relying on side effects being performed by the [selector] function on each element. * * @throws NoSuchElementException if the array is empty. * * @sample samples.collections.Collections.Aggregates.minMaxByOrNull */ @SinceKotlin("1.7") @kotlin.jvm.JvmName("minByOrThrow") @Suppress("CONFLICTING_OVERLOADS") public inline fun > CharArray.minBy(selector: (Char) -> R): Char { if (isEmpty()) throw NoSuchElementException() var minElem = this[0] val lastIndex = this.lastIndex if (lastIndex == 0) return minElem var minValue = selector(minElem) for (i in 1..lastIndex) { val e = this[i] val v = selector(e) if (minValue > v) { minElem = e minValue = v } } return minElem } /** * Returns the first element yielding the smallest value of the given [selector] function or `null` if there are no elements. * * If there are multiple equal minimal values returned by the [selector] function, * this function returns the first of elements corresponding to these values. * * Note that the function [selector] is not invoked when the array contains zero or one elements * because in these cases it is clear which element to return without invoking the [selector]. * Therefore it's recommended to avoid relying on side effects being performed by the [selector] function on each element. * * @sample samples.collections.Collections.Aggregates.minMaxByOrNull */ @SinceKotlin("1.4") public inline fun > Array.minByOrNull(selector: (T) -> R): T? { if (isEmpty()) return null var minElem = this[0] val lastIndex = this.lastIndex if (lastIndex == 0) return minElem var minValue = selector(minElem) for (i in 1..lastIndex) { val e = this[i] val v = selector(e) if (minValue > v) { minElem = e minValue = v } } return minElem } /** * Returns the first element yielding the smallest value of the given [selector] function or `null` if there are no elements. * * If there are multiple equal minimal values returned by the [selector] function, * this function returns the first of elements corresponding to these values. * * Note that the function [selector] is not invoked when the array contains zero or one elements * because in these cases it is clear which element to return without invoking the [selector]. * Therefore it's recommended to avoid relying on side effects being performed by the [selector] function on each element. * * @sample samples.collections.Collections.Aggregates.minMaxByOrNull */ @SinceKotlin("1.4") public inline fun > ByteArray.minByOrNull(selector: (Byte) -> R): Byte? { if (isEmpty()) return null var minElem = this[0] val lastIndex = this.lastIndex if (lastIndex == 0) return minElem var minValue = selector(minElem) for (i in 1..lastIndex) { val e = this[i] val v = selector(e) if (minValue > v) { minElem = e minValue = v } } return minElem } /** * Returns the first element yielding the smallest value of the given [selector] function or `null` if there are no elements. * * If there are multiple equal minimal values returned by the [selector] function, * this function returns the first of elements corresponding to these values. * * Note that the function [selector] is not invoked when the array contains zero or one elements * because in these cases it is clear which element to return without invoking the [selector]. * Therefore it's recommended to avoid relying on side effects being performed by the [selector] function on each element. * * @sample samples.collections.Collections.Aggregates.minMaxByOrNull */ @SinceKotlin("1.4") public inline fun > ShortArray.minByOrNull(selector: (Short) -> R): Short? { if (isEmpty()) return null var minElem = this[0] val lastIndex = this.lastIndex if (lastIndex == 0) return minElem var minValue = selector(minElem) for (i in 1..lastIndex) { val e = this[i] val v = selector(e) if (minValue > v) { minElem = e minValue = v } } return minElem } /** * Returns the first element yielding the smallest value of the given [selector] function or `null` if there are no elements. * * If there are multiple equal minimal values returned by the [selector] function, * this function returns the first of elements corresponding to these values. * * Note that the function [selector] is not invoked when the array contains zero or one elements * because in these cases it is clear which element to return without invoking the [selector]. * Therefore it's recommended to avoid relying on side effects being performed by the [selector] function on each element. * * @sample samples.collections.Collections.Aggregates.minMaxByOrNull */ @SinceKotlin("1.4") public inline fun > IntArray.minByOrNull(selector: (Int) -> R): Int? { if (isEmpty()) return null var minElem = this[0] val lastIndex = this.lastIndex if (lastIndex == 0) return minElem var minValue = selector(minElem) for (i in 1..lastIndex) { val e = this[i] val v = selector(e) if (minValue > v) { minElem = e minValue = v } } return minElem } /** * Returns the first element yielding the smallest value of the given [selector] function or `null` if there are no elements. * * If there are multiple equal minimal values returned by the [selector] function, * this function returns the first of elements corresponding to these values. * * Note that the function [selector] is not invoked when the array contains zero or one elements * because in these cases it is clear which element to return without invoking the [selector]. * Therefore it's recommended to avoid relying on side effects being performed by the [selector] function on each element. * * @sample samples.collections.Collections.Aggregates.minMaxByOrNull */ @SinceKotlin("1.4") public inline fun > LongArray.minByOrNull(selector: (Long) -> R): Long? { if (isEmpty()) return null var minElem = this[0] val lastIndex = this.lastIndex if (lastIndex == 0) return minElem var minValue = selector(minElem) for (i in 1..lastIndex) { val e = this[i] val v = selector(e) if (minValue > v) { minElem = e minValue = v } } return minElem } /** * Returns the first element yielding the smallest value of the given [selector] function or `null` if there are no elements. * * If there are multiple equal minimal values returned by the [selector] function, * this function returns the first of elements corresponding to these values. * * Note that the function [selector] is not invoked when the array contains zero or one elements * because in these cases it is clear which element to return without invoking the [selector]. * Therefore it's recommended to avoid relying on side effects being performed by the [selector] function on each element. * * @sample samples.collections.Collections.Aggregates.minMaxByOrNull */ @SinceKotlin("1.4") public inline fun > FloatArray.minByOrNull(selector: (Float) -> R): Float? { if (isEmpty()) return null var minElem = this[0] val lastIndex = this.lastIndex if (lastIndex == 0) return minElem var minValue = selector(minElem) for (i in 1..lastIndex) { val e = this[i] val v = selector(e) if (minValue > v) { minElem = e minValue = v } } return minElem } /** * Returns the first element yielding the smallest value of the given [selector] function or `null` if there are no elements. * * If there are multiple equal minimal values returned by the [selector] function, * this function returns the first of elements corresponding to these values. * * Note that the function [selector] is not invoked when the array contains zero or one elements * because in these cases it is clear which element to return without invoking the [selector]. * Therefore it's recommended to avoid relying on side effects being performed by the [selector] function on each element. * * @sample samples.collections.Collections.Aggregates.minMaxByOrNull */ @SinceKotlin("1.4") public inline fun > DoubleArray.minByOrNull(selector: (Double) -> R): Double? { if (isEmpty()) return null var minElem = this[0] val lastIndex = this.lastIndex if (lastIndex == 0) return minElem var minValue = selector(minElem) for (i in 1..lastIndex) { val e = this[i] val v = selector(e) if (minValue > v) { minElem = e minValue = v } } return minElem } /** * Returns the first element yielding the smallest value of the given [selector] function or `null` if there are no elements. * * If there are multiple equal minimal values returned by the [selector] function, * this function returns the first of elements corresponding to these values. * * Note that the function [selector] is not invoked when the array contains zero or one elements * because in these cases it is clear which element to return without invoking the [selector]. * Therefore it's recommended to avoid relying on side effects being performed by the [selector] function on each element. * * @sample samples.collections.Collections.Aggregates.minMaxByOrNull */ @SinceKotlin("1.4") public inline fun > BooleanArray.minByOrNull(selector: (Boolean) -> R): Boolean? { if (isEmpty()) return null var minElem = this[0] val lastIndex = this.lastIndex if (lastIndex == 0) return minElem var minValue = selector(minElem) for (i in 1..lastIndex) { val e = this[i] val v = selector(e) if (minValue > v) { minElem = e minValue = v } } return minElem } /** * Returns the first element yielding the smallest value of the given [selector] function or `null` if there are no elements. * * If there are multiple equal minimal values returned by the [selector] function, * this function returns the first of elements corresponding to these values. * * Note that the function [selector] is not invoked when the array contains zero or one elements * because in these cases it is clear which element to return without invoking the [selector]. * Therefore it's recommended to avoid relying on side effects being performed by the [selector] function on each element. * * @sample samples.collections.Collections.Aggregates.minMaxByOrNull */ @SinceKotlin("1.4") public inline fun > CharArray.minByOrNull(selector: (Char) -> R): Char? { if (isEmpty()) return null var minElem = this[0] val lastIndex = this.lastIndex if (lastIndex == 0) return minElem var minValue = selector(minElem) for (i in 1..lastIndex) { val e = this[i] val v = selector(e) if (minValue > v) { minElem = e minValue = v } } return minElem } /** * Returns the smallest value among all values produced by [selector] function * applied to each element in the array. * * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`. * * @throws NoSuchElementException if the array is empty. * * @sample samples.collections.Collections.Aggregates.maxOfMinOfFloatingResult */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun Array.minOf(selector: (T) -> Double): Double { if (isEmpty()) throw NoSuchElementException() var minValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) minValue = minOf(minValue, v) } return minValue } /** * Returns the smallest value among all values produced by [selector] function * applied to each element in the array. * * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`. * * @throws NoSuchElementException if the array is empty. * * @sample samples.collections.Collections.Aggregates.maxOfMinOfFloatingResult */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun ByteArray.minOf(selector: (Byte) -> Double): Double { if (isEmpty()) throw NoSuchElementException() var minValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) minValue = minOf(minValue, v) } return minValue } /** * Returns the smallest value among all values produced by [selector] function * applied to each element in the array. * * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`. * * @throws NoSuchElementException if the array is empty. * * @sample samples.collections.Collections.Aggregates.maxOfMinOfFloatingResult */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun ShortArray.minOf(selector: (Short) -> Double): Double { if (isEmpty()) throw NoSuchElementException() var minValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) minValue = minOf(minValue, v) } return minValue } /** * Returns the smallest value among all values produced by [selector] function * applied to each element in the array. * * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`. * * @throws NoSuchElementException if the array is empty. * * @sample samples.collections.Collections.Aggregates.maxOfMinOfFloatingResult */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun IntArray.minOf(selector: (Int) -> Double): Double { if (isEmpty()) throw NoSuchElementException() var minValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) minValue = minOf(minValue, v) } return minValue } /** * Returns the smallest value among all values produced by [selector] function * applied to each element in the array. * * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`. * * @throws NoSuchElementException if the array is empty. * * @sample samples.collections.Collections.Aggregates.maxOfMinOfFloatingResult */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun LongArray.minOf(selector: (Long) -> Double): Double { if (isEmpty()) throw NoSuchElementException() var minValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) minValue = minOf(minValue, v) } return minValue } /** * Returns the smallest value among all values produced by [selector] function * applied to each element in the array. * * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`. * * @throws NoSuchElementException if the array is empty. * * @sample samples.collections.Collections.Aggregates.maxOfMinOfFloatingResult */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun FloatArray.minOf(selector: (Float) -> Double): Double { if (isEmpty()) throw NoSuchElementException() var minValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) minValue = minOf(minValue, v) } return minValue } /** * Returns the smallest value among all values produced by [selector] function * applied to each element in the array. * * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`. * * @throws NoSuchElementException if the array is empty. * * @sample samples.collections.Collections.Aggregates.maxOfMinOfFloatingResult */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun DoubleArray.minOf(selector: (Double) -> Double): Double { if (isEmpty()) throw NoSuchElementException() var minValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) minValue = minOf(minValue, v) } return minValue } /** * Returns the smallest value among all values produced by [selector] function * applied to each element in the array. * * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`. * * @throws NoSuchElementException if the array is empty. * * @sample samples.collections.Collections.Aggregates.maxOfMinOfFloatingResult */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun BooleanArray.minOf(selector: (Boolean) -> Double): Double { if (isEmpty()) throw NoSuchElementException() var minValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) minValue = minOf(minValue, v) } return minValue } /** * Returns the smallest value among all values produced by [selector] function * applied to each element in the array. * * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`. * * @throws NoSuchElementException if the array is empty. * * @sample samples.collections.Collections.Aggregates.maxOfMinOfFloatingResult */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun CharArray.minOf(selector: (Char) -> Double): Double { if (isEmpty()) throw NoSuchElementException() var minValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) minValue = minOf(minValue, v) } return minValue } /** * Returns the smallest value among all values produced by [selector] function * applied to each element in the array. * * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`. * * @throws NoSuchElementException if the array is empty. * * @sample samples.collections.Collections.Aggregates.maxOfMinOfFloatingResult */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun Array.minOf(selector: (T) -> Float): Float { if (isEmpty()) throw NoSuchElementException() var minValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) minValue = minOf(minValue, v) } return minValue } /** * Returns the smallest value among all values produced by [selector] function * applied to each element in the array. * * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`. * * @throws NoSuchElementException if the array is empty. * * @sample samples.collections.Collections.Aggregates.maxOfMinOfFloatingResult */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun ByteArray.minOf(selector: (Byte) -> Float): Float { if (isEmpty()) throw NoSuchElementException() var minValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) minValue = minOf(minValue, v) } return minValue } /** * Returns the smallest value among all values produced by [selector] function * applied to each element in the array. * * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`. * * @throws NoSuchElementException if the array is empty. * * @sample samples.collections.Collections.Aggregates.maxOfMinOfFloatingResult */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun ShortArray.minOf(selector: (Short) -> Float): Float { if (isEmpty()) throw NoSuchElementException() var minValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) minValue = minOf(minValue, v) } return minValue } /** * Returns the smallest value among all values produced by [selector] function * applied to each element in the array. * * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`. * * @throws NoSuchElementException if the array is empty. * * @sample samples.collections.Collections.Aggregates.maxOfMinOfFloatingResult */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun IntArray.minOf(selector: (Int) -> Float): Float { if (isEmpty()) throw NoSuchElementException() var minValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) minValue = minOf(minValue, v) } return minValue } /** * Returns the smallest value among all values produced by [selector] function * applied to each element in the array. * * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`. * * @throws NoSuchElementException if the array is empty. * * @sample samples.collections.Collections.Aggregates.maxOfMinOfFloatingResult */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun LongArray.minOf(selector: (Long) -> Float): Float { if (isEmpty()) throw NoSuchElementException() var minValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) minValue = minOf(minValue, v) } return minValue } /** * Returns the smallest value among all values produced by [selector] function * applied to each element in the array. * * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`. * * @throws NoSuchElementException if the array is empty. * * @sample samples.collections.Collections.Aggregates.maxOfMinOfFloatingResult */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun FloatArray.minOf(selector: (Float) -> Float): Float { if (isEmpty()) throw NoSuchElementException() var minValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) minValue = minOf(minValue, v) } return minValue } /** * Returns the smallest value among all values produced by [selector] function * applied to each element in the array. * * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`. * * @throws NoSuchElementException if the array is empty. * * @sample samples.collections.Collections.Aggregates.maxOfMinOfFloatingResult */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun DoubleArray.minOf(selector: (Double) -> Float): Float { if (isEmpty()) throw NoSuchElementException() var minValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) minValue = minOf(minValue, v) } return minValue } /** * Returns the smallest value among all values produced by [selector] function * applied to each element in the array. * * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`. * * @throws NoSuchElementException if the array is empty. * * @sample samples.collections.Collections.Aggregates.maxOfMinOfFloatingResult */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun BooleanArray.minOf(selector: (Boolean) -> Float): Float { if (isEmpty()) throw NoSuchElementException() var minValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) minValue = minOf(minValue, v) } return minValue } /** * Returns the smallest value among all values produced by [selector] function * applied to each element in the array. * * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`. * * @throws NoSuchElementException if the array is empty. * * @sample samples.collections.Collections.Aggregates.maxOfMinOfFloatingResult */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun CharArray.minOf(selector: (Char) -> Float): Float { if (isEmpty()) throw NoSuchElementException() var minValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) minValue = minOf(minValue, v) } return minValue } /** * Returns the smallest value among all values produced by [selector] function * applied to each element in the array. * * If multiple elements produce the minimal value, this function returns the first of those values. * * @throws NoSuchElementException if the array is empty. * * @sample samples.collections.Collections.Aggregates.maxOfMinOfGeneric */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun > Array.minOf(selector: (T) -> R): R { if (isEmpty()) throw NoSuchElementException() var minValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) if (minValue > v) { minValue = v } } return minValue } /** * Returns the smallest value among all values produced by [selector] function * applied to each element in the array. * * If multiple elements produce the minimal value, this function returns the first of those values. * * @throws NoSuchElementException if the array is empty. * * @sample samples.collections.Collections.Aggregates.maxOfMinOfPrimitive */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun > ByteArray.minOf(selector: (Byte) -> R): R { if (isEmpty()) throw NoSuchElementException() var minValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) if (minValue > v) { minValue = v } } return minValue } /** * Returns the smallest value among all values produced by [selector] function * applied to each element in the array. * * If multiple elements produce the minimal value, this function returns the first of those values. * * @throws NoSuchElementException if the array is empty. * * @sample samples.collections.Collections.Aggregates.maxOfMinOfPrimitive */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun > ShortArray.minOf(selector: (Short) -> R): R { if (isEmpty()) throw NoSuchElementException() var minValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) if (minValue > v) { minValue = v } } return minValue } /** * Returns the smallest value among all values produced by [selector] function * applied to each element in the array. * * If multiple elements produce the minimal value, this function returns the first of those values. * * @throws NoSuchElementException if the array is empty. * * @sample samples.collections.Collections.Aggregates.maxOfMinOfPrimitive */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun > IntArray.minOf(selector: (Int) -> R): R { if (isEmpty()) throw NoSuchElementException() var minValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) if (minValue > v) { minValue = v } } return minValue } /** * Returns the smallest value among all values produced by [selector] function * applied to each element in the array. * * If multiple elements produce the minimal value, this function returns the first of those values. * * @throws NoSuchElementException if the array is empty. * * @sample samples.collections.Collections.Aggregates.maxOfMinOfPrimitive */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun > LongArray.minOf(selector: (Long) -> R): R { if (isEmpty()) throw NoSuchElementException() var minValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) if (minValue > v) { minValue = v } } return minValue } /** * Returns the smallest value among all values produced by [selector] function * applied to each element in the array. * * If multiple elements produce the minimal value, this function returns the first of those values. * * @throws NoSuchElementException if the array is empty. * * @sample samples.collections.Collections.Aggregates.maxOfMinOfPrimitive */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun > FloatArray.minOf(selector: (Float) -> R): R { if (isEmpty()) throw NoSuchElementException() var minValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) if (minValue > v) { minValue = v } } return minValue } /** * Returns the smallest value among all values produced by [selector] function * applied to each element in the array. * * If multiple elements produce the minimal value, this function returns the first of those values. * * @throws NoSuchElementException if the array is empty. * * @sample samples.collections.Collections.Aggregates.maxOfMinOfPrimitive */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun > DoubleArray.minOf(selector: (Double) -> R): R { if (isEmpty()) throw NoSuchElementException() var minValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) if (minValue > v) { minValue = v } } return minValue } /** * Returns the smallest value among all values produced by [selector] function * applied to each element in the array. * * If multiple elements produce the minimal value, this function returns the first of those values. * * @throws NoSuchElementException if the array is empty. * * @sample samples.collections.Collections.Aggregates.maxOfMinOfPrimitive */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun > BooleanArray.minOf(selector: (Boolean) -> R): R { if (isEmpty()) throw NoSuchElementException() var minValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) if (minValue > v) { minValue = v } } return minValue } /** * Returns the smallest value among all values produced by [selector] function * applied to each element in the array. * * If multiple elements produce the minimal value, this function returns the first of those values. * * @throws NoSuchElementException if the array is empty. * * @sample samples.collections.Collections.Aggregates.maxOfMinOfPrimitive */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun > CharArray.minOf(selector: (Char) -> R): R { if (isEmpty()) throw NoSuchElementException() var minValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) if (minValue > v) { minValue = v } } return minValue } /** * Returns the smallest value among all values produced by [selector] function * applied to each element in the array or `null` if the array is empty. * * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`. * * @sample samples.collections.Collections.Aggregates.maxOfMinOfFloatingResult */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun Array.minOfOrNull(selector: (T) -> Double): Double? { if (isEmpty()) return null var minValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) minValue = minOf(minValue, v) } return minValue } /** * Returns the smallest value among all values produced by [selector] function * applied to each element in the array or `null` if the array is empty. * * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`. * * @sample samples.collections.Collections.Aggregates.maxOfMinOfFloatingResult */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun ByteArray.minOfOrNull(selector: (Byte) -> Double): Double? { if (isEmpty()) return null var minValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) minValue = minOf(minValue, v) } return minValue } /** * Returns the smallest value among all values produced by [selector] function * applied to each element in the array or `null` if the array is empty. * * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`. * * @sample samples.collections.Collections.Aggregates.maxOfMinOfFloatingResult */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun ShortArray.minOfOrNull(selector: (Short) -> Double): Double? { if (isEmpty()) return null var minValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) minValue = minOf(minValue, v) } return minValue } /** * Returns the smallest value among all values produced by [selector] function * applied to each element in the array or `null` if the array is empty. * * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`. * * @sample samples.collections.Collections.Aggregates.maxOfMinOfFloatingResult */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun IntArray.minOfOrNull(selector: (Int) -> Double): Double? { if (isEmpty()) return null var minValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) minValue = minOf(minValue, v) } return minValue } /** * Returns the smallest value among all values produced by [selector] function * applied to each element in the array or `null` if the array is empty. * * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`. * * @sample samples.collections.Collections.Aggregates.maxOfMinOfFloatingResult */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun LongArray.minOfOrNull(selector: (Long) -> Double): Double? { if (isEmpty()) return null var minValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) minValue = minOf(minValue, v) } return minValue } /** * Returns the smallest value among all values produced by [selector] function * applied to each element in the array or `null` if the array is empty. * * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`. * * @sample samples.collections.Collections.Aggregates.maxOfMinOfFloatingResult */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun FloatArray.minOfOrNull(selector: (Float) -> Double): Double? { if (isEmpty()) return null var minValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) minValue = minOf(minValue, v) } return minValue } /** * Returns the smallest value among all values produced by [selector] function * applied to each element in the array or `null` if the array is empty. * * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`. * * @sample samples.collections.Collections.Aggregates.maxOfMinOfFloatingResult */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun DoubleArray.minOfOrNull(selector: (Double) -> Double): Double? { if (isEmpty()) return null var minValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) minValue = minOf(minValue, v) } return minValue } /** * Returns the smallest value among all values produced by [selector] function * applied to each element in the array or `null` if the array is empty. * * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`. * * @sample samples.collections.Collections.Aggregates.maxOfMinOfFloatingResult */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun BooleanArray.minOfOrNull(selector: (Boolean) -> Double): Double? { if (isEmpty()) return null var minValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) minValue = minOf(minValue, v) } return minValue } /** * Returns the smallest value among all values produced by [selector] function * applied to each element in the array or `null` if the array is empty. * * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`. * * @sample samples.collections.Collections.Aggregates.maxOfMinOfFloatingResult */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun CharArray.minOfOrNull(selector: (Char) -> Double): Double? { if (isEmpty()) return null var minValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) minValue = minOf(minValue, v) } return minValue } /** * Returns the smallest value among all values produced by [selector] function * applied to each element in the array or `null` if the array is empty. * * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`. * * @sample samples.collections.Collections.Aggregates.maxOfMinOfFloatingResult */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun Array.minOfOrNull(selector: (T) -> Float): Float? { if (isEmpty()) return null var minValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) minValue = minOf(minValue, v) } return minValue } /** * Returns the smallest value among all values produced by [selector] function * applied to each element in the array or `null` if the array is empty. * * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`. * * @sample samples.collections.Collections.Aggregates.maxOfMinOfFloatingResult */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun ByteArray.minOfOrNull(selector: (Byte) -> Float): Float? { if (isEmpty()) return null var minValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) minValue = minOf(minValue, v) } return minValue } /** * Returns the smallest value among all values produced by [selector] function * applied to each element in the array or `null` if the array is empty. * * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`. * * @sample samples.collections.Collections.Aggregates.maxOfMinOfFloatingResult */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun ShortArray.minOfOrNull(selector: (Short) -> Float): Float? { if (isEmpty()) return null var minValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) minValue = minOf(minValue, v) } return minValue } /** * Returns the smallest value among all values produced by [selector] function * applied to each element in the array or `null` if the array is empty. * * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`. * * @sample samples.collections.Collections.Aggregates.maxOfMinOfFloatingResult */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun IntArray.minOfOrNull(selector: (Int) -> Float): Float? { if (isEmpty()) return null var minValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) minValue = minOf(minValue, v) } return minValue } /** * Returns the smallest value among all values produced by [selector] function * applied to each element in the array or `null` if the array is empty. * * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`. * * @sample samples.collections.Collections.Aggregates.maxOfMinOfFloatingResult */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun LongArray.minOfOrNull(selector: (Long) -> Float): Float? { if (isEmpty()) return null var minValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) minValue = minOf(minValue, v) } return minValue } /** * Returns the smallest value among all values produced by [selector] function * applied to each element in the array or `null` if the array is empty. * * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`. * * @sample samples.collections.Collections.Aggregates.maxOfMinOfFloatingResult */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun FloatArray.minOfOrNull(selector: (Float) -> Float): Float? { if (isEmpty()) return null var minValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) minValue = minOf(minValue, v) } return minValue } /** * Returns the smallest value among all values produced by [selector] function * applied to each element in the array or `null` if the array is empty. * * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`. * * @sample samples.collections.Collections.Aggregates.maxOfMinOfFloatingResult */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun DoubleArray.minOfOrNull(selector: (Double) -> Float): Float? { if (isEmpty()) return null var minValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) minValue = minOf(minValue, v) } return minValue } /** * Returns the smallest value among all values produced by [selector] function * applied to each element in the array or `null` if the array is empty. * * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`. * * @sample samples.collections.Collections.Aggregates.maxOfMinOfFloatingResult */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun BooleanArray.minOfOrNull(selector: (Boolean) -> Float): Float? { if (isEmpty()) return null var minValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) minValue = minOf(minValue, v) } return minValue } /** * Returns the smallest value among all values produced by [selector] function * applied to each element in the array or `null` if the array is empty. * * If any of values produced by [selector] function is `NaN`, the returned result is `NaN`. * * @sample samples.collections.Collections.Aggregates.maxOfMinOfFloatingResult */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun CharArray.minOfOrNull(selector: (Char) -> Float): Float? { if (isEmpty()) return null var minValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) minValue = minOf(minValue, v) } return minValue } /** * Returns the smallest value among all values produced by [selector] function * applied to each element in the array or `null` if the array is empty. * * If multiple elements produce the minimal value, this function returns the first of those values. * * @sample samples.collections.Collections.Aggregates.maxOfMinOfGeneric */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun > Array.minOfOrNull(selector: (T) -> R): R? { if (isEmpty()) return null var minValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) if (minValue > v) { minValue = v } } return minValue } /** * Returns the smallest value among all values produced by [selector] function * applied to each element in the array or `null` if the array is empty. * * If multiple elements produce the minimal value, this function returns the first of those values. * * @sample samples.collections.Collections.Aggregates.maxOfMinOfPrimitive */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun > ByteArray.minOfOrNull(selector: (Byte) -> R): R? { if (isEmpty()) return null var minValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) if (minValue > v) { minValue = v } } return minValue } /** * Returns the smallest value among all values produced by [selector] function * applied to each element in the array or `null` if the array is empty. * * If multiple elements produce the minimal value, this function returns the first of those values. * * @sample samples.collections.Collections.Aggregates.maxOfMinOfPrimitive */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun > ShortArray.minOfOrNull(selector: (Short) -> R): R? { if (isEmpty()) return null var minValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) if (minValue > v) { minValue = v } } return minValue } /** * Returns the smallest value among all values produced by [selector] function * applied to each element in the array or `null` if the array is empty. * * If multiple elements produce the minimal value, this function returns the first of those values. * * @sample samples.collections.Collections.Aggregates.maxOfMinOfPrimitive */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun > IntArray.minOfOrNull(selector: (Int) -> R): R? { if (isEmpty()) return null var minValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) if (minValue > v) { minValue = v } } return minValue } /** * Returns the smallest value among all values produced by [selector] function * applied to each element in the array or `null` if the array is empty. * * If multiple elements produce the minimal value, this function returns the first of those values. * * @sample samples.collections.Collections.Aggregates.maxOfMinOfPrimitive */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun > LongArray.minOfOrNull(selector: (Long) -> R): R? { if (isEmpty()) return null var minValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) if (minValue > v) { minValue = v } } return minValue } /** * Returns the smallest value among all values produced by [selector] function * applied to each element in the array or `null` if the array is empty. * * If multiple elements produce the minimal value, this function returns the first of those values. * * @sample samples.collections.Collections.Aggregates.maxOfMinOfPrimitive */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun > FloatArray.minOfOrNull(selector: (Float) -> R): R? { if (isEmpty()) return null var minValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) if (minValue > v) { minValue = v } } return minValue } /** * Returns the smallest value among all values produced by [selector] function * applied to each element in the array or `null` if the array is empty. * * If multiple elements produce the minimal value, this function returns the first of those values. * * @sample samples.collections.Collections.Aggregates.maxOfMinOfPrimitive */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun > DoubleArray.minOfOrNull(selector: (Double) -> R): R? { if (isEmpty()) return null var minValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) if (minValue > v) { minValue = v } } return minValue } /** * Returns the smallest value among all values produced by [selector] function * applied to each element in the array or `null` if the array is empty. * * If multiple elements produce the minimal value, this function returns the first of those values. * * @sample samples.collections.Collections.Aggregates.maxOfMinOfPrimitive */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun > BooleanArray.minOfOrNull(selector: (Boolean) -> R): R? { if (isEmpty()) return null var minValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) if (minValue > v) { minValue = v } } return minValue } /** * Returns the smallest value among all values produced by [selector] function * applied to each element in the array or `null` if the array is empty. * * If multiple elements produce the minimal value, this function returns the first of those values. * * @sample samples.collections.Collections.Aggregates.maxOfMinOfPrimitive */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun > CharArray.minOfOrNull(selector: (Char) -> R): R? { if (isEmpty()) return null var minValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) if (minValue > v) { minValue = v } } return minValue } /** * Returns the smallest value according to the provided [comparator] * among all values produced by [selector] function applied to each element in the array. * * If multiple elements produce the minimal value, this function returns the first of those values. * * @throws NoSuchElementException if the array is empty. * * @sample samples.collections.Collections.Aggregates.maxOfWithMinOfWithGeneric */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun Array.minOfWith(comparator: Comparator, selector: (T) -> R): R { if (isEmpty()) throw NoSuchElementException() var minValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) if (comparator.compare(minValue, v) > 0) { minValue = v } } return minValue } /** * Returns the smallest value according to the provided [comparator] * among all values produced by [selector] function applied to each element in the array. * * If multiple elements produce the minimal value, this function returns the first of those values. * * @throws NoSuchElementException if the array is empty. * * @sample samples.collections.Collections.Aggregates.maxOfWithMinOfWithPrimitive */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun ByteArray.minOfWith(comparator: Comparator, selector: (Byte) -> R): R { if (isEmpty()) throw NoSuchElementException() var minValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) if (comparator.compare(minValue, v) > 0) { minValue = v } } return minValue } /** * Returns the smallest value according to the provided [comparator] * among all values produced by [selector] function applied to each element in the array. * * If multiple elements produce the minimal value, this function returns the first of those values. * * @throws NoSuchElementException if the array is empty. * * @sample samples.collections.Collections.Aggregates.maxOfWithMinOfWithPrimitive */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun ShortArray.minOfWith(comparator: Comparator, selector: (Short) -> R): R { if (isEmpty()) throw NoSuchElementException() var minValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) if (comparator.compare(minValue, v) > 0) { minValue = v } } return minValue } /** * Returns the smallest value according to the provided [comparator] * among all values produced by [selector] function applied to each element in the array. * * If multiple elements produce the minimal value, this function returns the first of those values. * * @throws NoSuchElementException if the array is empty. * * @sample samples.collections.Collections.Aggregates.maxOfWithMinOfWithPrimitive */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun IntArray.minOfWith(comparator: Comparator, selector: (Int) -> R): R { if (isEmpty()) throw NoSuchElementException() var minValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) if (comparator.compare(minValue, v) > 0) { minValue = v } } return minValue } /** * Returns the smallest value according to the provided [comparator] * among all values produced by [selector] function applied to each element in the array. * * If multiple elements produce the minimal value, this function returns the first of those values. * * @throws NoSuchElementException if the array is empty. * * @sample samples.collections.Collections.Aggregates.maxOfWithMinOfWithPrimitive */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun LongArray.minOfWith(comparator: Comparator, selector: (Long) -> R): R { if (isEmpty()) throw NoSuchElementException() var minValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) if (comparator.compare(minValue, v) > 0) { minValue = v } } return minValue } /** * Returns the smallest value according to the provided [comparator] * among all values produced by [selector] function applied to each element in the array. * * If multiple elements produce the minimal value, this function returns the first of those values. * * @throws NoSuchElementException if the array is empty. * * @sample samples.collections.Collections.Aggregates.maxOfWithMinOfWithPrimitive */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun FloatArray.minOfWith(comparator: Comparator, selector: (Float) -> R): R { if (isEmpty()) throw NoSuchElementException() var minValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) if (comparator.compare(minValue, v) > 0) { minValue = v } } return minValue } /** * Returns the smallest value according to the provided [comparator] * among all values produced by [selector] function applied to each element in the array. * * If multiple elements produce the minimal value, this function returns the first of those values. * * @throws NoSuchElementException if the array is empty. * * @sample samples.collections.Collections.Aggregates.maxOfWithMinOfWithPrimitive */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun DoubleArray.minOfWith(comparator: Comparator, selector: (Double) -> R): R { if (isEmpty()) throw NoSuchElementException() var minValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) if (comparator.compare(minValue, v) > 0) { minValue = v } } return minValue } /** * Returns the smallest value according to the provided [comparator] * among all values produced by [selector] function applied to each element in the array. * * If multiple elements produce the minimal value, this function returns the first of those values. * * @throws NoSuchElementException if the array is empty. * * @sample samples.collections.Collections.Aggregates.maxOfWithMinOfWithPrimitive */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun BooleanArray.minOfWith(comparator: Comparator, selector: (Boolean) -> R): R { if (isEmpty()) throw NoSuchElementException() var minValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) if (comparator.compare(minValue, v) > 0) { minValue = v } } return minValue } /** * Returns the smallest value according to the provided [comparator] * among all values produced by [selector] function applied to each element in the array. * * If multiple elements produce the minimal value, this function returns the first of those values. * * @throws NoSuchElementException if the array is empty. * * @sample samples.collections.Collections.Aggregates.maxOfWithMinOfWithPrimitive */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun CharArray.minOfWith(comparator: Comparator, selector: (Char) -> R): R { if (isEmpty()) throw NoSuchElementException() var minValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) if (comparator.compare(minValue, v) > 0) { minValue = v } } return minValue } /** * Returns the smallest value according to the provided [comparator] * among all values produced by [selector] function applied to each element in the array or `null` if the array is empty. * * If multiple elements produce the minimal value, this function returns the first of those values. * * @sample samples.collections.Collections.Aggregates.maxOfWithMinOfWithGeneric */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun Array.minOfWithOrNull(comparator: Comparator, selector: (T) -> R): R? { if (isEmpty()) return null var minValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) if (comparator.compare(minValue, v) > 0) { minValue = v } } return minValue } /** * Returns the smallest value according to the provided [comparator] * among all values produced by [selector] function applied to each element in the array or `null` if the array is empty. * * If multiple elements produce the minimal value, this function returns the first of those values. * * @sample samples.collections.Collections.Aggregates.maxOfWithMinOfWithPrimitive */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun ByteArray.minOfWithOrNull(comparator: Comparator, selector: (Byte) -> R): R? { if (isEmpty()) return null var minValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) if (comparator.compare(minValue, v) > 0) { minValue = v } } return minValue } /** * Returns the smallest value according to the provided [comparator] * among all values produced by [selector] function applied to each element in the array or `null` if the array is empty. * * If multiple elements produce the minimal value, this function returns the first of those values. * * @sample samples.collections.Collections.Aggregates.maxOfWithMinOfWithPrimitive */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun ShortArray.minOfWithOrNull(comparator: Comparator, selector: (Short) -> R): R? { if (isEmpty()) return null var minValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) if (comparator.compare(minValue, v) > 0) { minValue = v } } return minValue } /** * Returns the smallest value according to the provided [comparator] * among all values produced by [selector] function applied to each element in the array or `null` if the array is empty. * * If multiple elements produce the minimal value, this function returns the first of those values. * * @sample samples.collections.Collections.Aggregates.maxOfWithMinOfWithPrimitive */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun IntArray.minOfWithOrNull(comparator: Comparator, selector: (Int) -> R): R? { if (isEmpty()) return null var minValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) if (comparator.compare(minValue, v) > 0) { minValue = v } } return minValue } /** * Returns the smallest value according to the provided [comparator] * among all values produced by [selector] function applied to each element in the array or `null` if the array is empty. * * If multiple elements produce the minimal value, this function returns the first of those values. * * @sample samples.collections.Collections.Aggregates.maxOfWithMinOfWithPrimitive */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun LongArray.minOfWithOrNull(comparator: Comparator, selector: (Long) -> R): R? { if (isEmpty()) return null var minValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) if (comparator.compare(minValue, v) > 0) { minValue = v } } return minValue } /** * Returns the smallest value according to the provided [comparator] * among all values produced by [selector] function applied to each element in the array or `null` if the array is empty. * * If multiple elements produce the minimal value, this function returns the first of those values. * * @sample samples.collections.Collections.Aggregates.maxOfWithMinOfWithPrimitive */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun FloatArray.minOfWithOrNull(comparator: Comparator, selector: (Float) -> R): R? { if (isEmpty()) return null var minValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) if (comparator.compare(minValue, v) > 0) { minValue = v } } return minValue } /** * Returns the smallest value according to the provided [comparator] * among all values produced by [selector] function applied to each element in the array or `null` if the array is empty. * * If multiple elements produce the minimal value, this function returns the first of those values. * * @sample samples.collections.Collections.Aggregates.maxOfWithMinOfWithPrimitive */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun DoubleArray.minOfWithOrNull(comparator: Comparator, selector: (Double) -> R): R? { if (isEmpty()) return null var minValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) if (comparator.compare(minValue, v) > 0) { minValue = v } } return minValue } /** * Returns the smallest value according to the provided [comparator] * among all values produced by [selector] function applied to each element in the array or `null` if the array is empty. * * If multiple elements produce the minimal value, this function returns the first of those values. * * @sample samples.collections.Collections.Aggregates.maxOfWithMinOfWithPrimitive */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun BooleanArray.minOfWithOrNull(comparator: Comparator, selector: (Boolean) -> R): R? { if (isEmpty()) return null var minValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) if (comparator.compare(minValue, v) > 0) { minValue = v } } return minValue } /** * Returns the smallest value according to the provided [comparator] * among all values produced by [selector] function applied to each element in the array or `null` if the array is empty. * * If multiple elements produce the minimal value, this function returns the first of those values. * * @sample samples.collections.Collections.Aggregates.maxOfWithMinOfWithPrimitive */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.internal.InlineOnly public inline fun CharArray.minOfWithOrNull(comparator: Comparator, selector: (Char) -> R): R? { if (isEmpty()) return null var minValue = selector(this[0]) for (i in 1..lastIndex) { val v = selector(this[i]) if (comparator.compare(minValue, v) > 0) { minValue = v } } return minValue } /** * Returns the smallest element or `null` if the array is empty. * * If any of elements is `NaN`, this function returns `NaN`. * * @sample samples.collections.Collections.Aggregates.maxMinFloating */ @SinceKotlin("1.4") public fun Array.minOrNull(): Double? { if (isEmpty()) return null var min = this[0] for (i in 1..lastIndex) { val e = this[i] min = minOf(min, e) } return min } /** * Returns the smallest element or `null` if the array is empty. * * If any of elements is `NaN`, this function returns `NaN`. * * @sample samples.collections.Collections.Aggregates.maxMinFloating */ @SinceKotlin("1.4") public fun Array.minOrNull(): Float? { if (isEmpty()) return null var min = this[0] for (i in 1..lastIndex) { val e = this[i] min = minOf(min, e) } return min } /** * Returns the smallest element or `null` if the array is empty. * * If there are multiple equal minimal elements, this function returns the first of those elements. * * @sample samples.collections.Collections.Aggregates.maxMinGeneric */ @SinceKotlin("1.4") public fun > Array.minOrNull(): T? { if (isEmpty()) return null var min = this[0] for (i in 1..lastIndex) { val e = this[i] if (min > e) min = e } return min } /** * Returns the smallest element or `null` if the array is empty. * * @sample samples.collections.Collections.Aggregates.maxMinPrimitive */ @SinceKotlin("1.4") public fun ByteArray.minOrNull(): Byte? { if (isEmpty()) return null var min = this[0] for (i in 1..lastIndex) { val e = this[i] if (min > e) min = e } return min } /** * Returns the smallest element or `null` if the array is empty. * * @sample samples.collections.Collections.Aggregates.maxMinPrimitive */ @SinceKotlin("1.4") public fun ShortArray.minOrNull(): Short? { if (isEmpty()) return null var min = this[0] for (i in 1..lastIndex) { val e = this[i] if (min > e) min = e } return min } /** * Returns the smallest element or `null` if the array is empty. * * @sample samples.collections.Collections.Aggregates.maxMinPrimitive */ @SinceKotlin("1.4") public fun IntArray.minOrNull(): Int? { if (isEmpty()) return null var min = this[0] for (i in 1..lastIndex) { val e = this[i] if (min > e) min = e } return min } /** * Returns the smallest element or `null` if the array is empty. * * @sample samples.collections.Collections.Aggregates.maxMinPrimitive */ @SinceKotlin("1.4") public fun LongArray.minOrNull(): Long? { if (isEmpty()) return null var min = this[0] for (i in 1..lastIndex) { val e = this[i] if (min > e) min = e } return min } /** * Returns the smallest element or `null` if the array is empty. * * If any of elements is `NaN`, this function returns `NaN`. * * @sample samples.collections.Collections.Aggregates.maxMinFloating */ @SinceKotlin("1.4") public fun FloatArray.minOrNull(): Float? { if (isEmpty()) return null var min = this[0] for (i in 1..lastIndex) { val e = this[i] min = minOf(min, e) } return min } /** * Returns the smallest element or `null` if the array is empty. * * If any of elements is `NaN`, this function returns `NaN`. * * @sample samples.collections.Collections.Aggregates.maxMinFloating */ @SinceKotlin("1.4") public fun DoubleArray.minOrNull(): Double? { if (isEmpty()) return null var min = this[0] for (i in 1..lastIndex) { val e = this[i] min = minOf(min, e) } return min } /** * Returns the smallest element or `null` if the array is empty. * * @sample samples.collections.Collections.Aggregates.maxMinPrimitive */ @SinceKotlin("1.4") public fun CharArray.minOrNull(): Char? { if (isEmpty()) return null var min = this[0] for (i in 1..lastIndex) { val e = this[i] if (min > e) min = e } return min } /** * Returns the first element having the smallest value according to the provided [comparator]. * * @throws NoSuchElementException if the array is empty. */ @SinceKotlin("1.7") @kotlin.jvm.JvmName("minWithOrThrow") @Suppress("CONFLICTING_OVERLOADS") public fun Array.minWith(comparator: Comparator): T { if (isEmpty()) throw NoSuchElementException() var min = this[0] for (i in 1..lastIndex) { val e = this[i] if (comparator.compare(min, e) > 0) min = e } return min } /** * Returns the first element having the smallest value according to the provided [comparator]. * * @throws NoSuchElementException if the array is empty. */ @SinceKotlin("1.7") @kotlin.jvm.JvmName("minWithOrThrow") @Suppress("CONFLICTING_OVERLOADS") public fun ByteArray.minWith(comparator: Comparator): Byte { if (isEmpty()) throw NoSuchElementException() var min = this[0] for (i in 1..lastIndex) { val e = this[i] if (comparator.compare(min, e) > 0) min = e } return min } /** * Returns the first element having the smallest value according to the provided [comparator]. * * @throws NoSuchElementException if the array is empty. */ @SinceKotlin("1.7") @kotlin.jvm.JvmName("minWithOrThrow") @Suppress("CONFLICTING_OVERLOADS") public fun ShortArray.minWith(comparator: Comparator): Short { if (isEmpty()) throw NoSuchElementException() var min = this[0] for (i in 1..lastIndex) { val e = this[i] if (comparator.compare(min, e) > 0) min = e } return min } /** * Returns the first element having the smallest value according to the provided [comparator]. * * @throws NoSuchElementException if the array is empty. */ @SinceKotlin("1.7") @kotlin.jvm.JvmName("minWithOrThrow") @Suppress("CONFLICTING_OVERLOADS") public fun IntArray.minWith(comparator: Comparator): Int { if (isEmpty()) throw NoSuchElementException() var min = this[0] for (i in 1..lastIndex) { val e = this[i] if (comparator.compare(min, e) > 0) min = e } return min } /** * Returns the first element having the smallest value according to the provided [comparator]. * * @throws NoSuchElementException if the array is empty. */ @SinceKotlin("1.7") @kotlin.jvm.JvmName("minWithOrThrow") @Suppress("CONFLICTING_OVERLOADS") public fun LongArray.minWith(comparator: Comparator): Long { if (isEmpty()) throw NoSuchElementException() var min = this[0] for (i in 1..lastIndex) { val e = this[i] if (comparator.compare(min, e) > 0) min = e } return min } /** * Returns the first element having the smallest value according to the provided [comparator]. * * @throws NoSuchElementException if the array is empty. */ @SinceKotlin("1.7") @kotlin.jvm.JvmName("minWithOrThrow") @Suppress("CONFLICTING_OVERLOADS") public fun FloatArray.minWith(comparator: Comparator): Float { if (isEmpty()) throw NoSuchElementException() var min = this[0] for (i in 1..lastIndex) { val e = this[i] if (comparator.compare(min, e) > 0) min = e } return min } /** * Returns the first element having the smallest value according to the provided [comparator]. * * @throws NoSuchElementException if the array is empty. */ @SinceKotlin("1.7") @kotlin.jvm.JvmName("minWithOrThrow") @Suppress("CONFLICTING_OVERLOADS") public fun DoubleArray.minWith(comparator: Comparator): Double { if (isEmpty()) throw NoSuchElementException() var min = this[0] for (i in 1..lastIndex) { val e = this[i] if (comparator.compare(min, e) > 0) min = e } return min } /** * Returns the first element having the smallest value according to the provided [comparator]. * * @throws NoSuchElementException if the array is empty. */ @SinceKotlin("1.7") @kotlin.jvm.JvmName("minWithOrThrow") @Suppress("CONFLICTING_OVERLOADS") public fun BooleanArray.minWith(comparator: Comparator): Boolean { if (isEmpty()) throw NoSuchElementException() var min = this[0] for (i in 1..lastIndex) { val e = this[i] if (comparator.compare(min, e) > 0) min = e } return min } /** * Returns the first element having the smallest value according to the provided [comparator]. * * @throws NoSuchElementException if the array is empty. */ @SinceKotlin("1.7") @kotlin.jvm.JvmName("minWithOrThrow") @Suppress("CONFLICTING_OVERLOADS") public fun CharArray.minWith(comparator: Comparator): Char { if (isEmpty()) throw NoSuchElementException() var min = this[0] for (i in 1..lastIndex) { val e = this[i] if (comparator.compare(min, e) > 0) min = e } return min } /** * Returns the first element having the smallest value according to the provided [comparator] or `null` if there are no elements. */ @SinceKotlin("1.4") public fun Array.minWithOrNull(comparator: Comparator): T? { if (isEmpty()) return null var min = this[0] for (i in 1..lastIndex) { val e = this[i] if (comparator.compare(min, e) > 0) min = e } return min } /** * Returns the first element having the smallest value according to the provided [comparator] or `null` if there are no elements. */ @SinceKotlin("1.4") public fun ByteArray.minWithOrNull(comparator: Comparator): Byte? { if (isEmpty()) return null var min = this[0] for (i in 1..lastIndex) { val e = this[i] if (comparator.compare(min, e) > 0) min = e } return min } /** * Returns the first element having the smallest value according to the provided [comparator] or `null` if there are no elements. */ @SinceKotlin("1.4") public fun ShortArray.minWithOrNull(comparator: Comparator): Short? { if (isEmpty()) return null var min = this[0] for (i in 1..lastIndex) { val e = this[i] if (comparator.compare(min, e) > 0) min = e } return min } /** * Returns the first element having the smallest value according to the provided [comparator] or `null` if there are no elements. */ @SinceKotlin("1.4") public fun IntArray.minWithOrNull(comparator: Comparator): Int? { if (isEmpty()) return null var min = this[0] for (i in 1..lastIndex) { val e = this[i] if (comparator.compare(min, e) > 0) min = e } return min } /** * Returns the first element having the smallest value according to the provided [comparator] or `null` if there are no elements. */ @SinceKotlin("1.4") public fun LongArray.minWithOrNull(comparator: Comparator): Long? { if (isEmpty()) return null var min = this[0] for (i in 1..lastIndex) { val e = this[i] if (comparator.compare(min, e) > 0) min = e } return min } /** * Returns the first element having the smallest value according to the provided [comparator] or `null` if there are no elements. */ @SinceKotlin("1.4") public fun FloatArray.minWithOrNull(comparator: Comparator): Float? { if (isEmpty()) return null var min = this[0] for (i in 1..lastIndex) { val e = this[i] if (comparator.compare(min, e) > 0) min = e } return min } /** * Returns the first element having the smallest value according to the provided [comparator] or `null` if there are no elements. */ @SinceKotlin("1.4") public fun DoubleArray.minWithOrNull(comparator: Comparator): Double? { if (isEmpty()) return null var min = this[0] for (i in 1..lastIndex) { val e = this[i] if (comparator.compare(min, e) > 0) min = e } return min } /** * Returns the first element having the smallest value according to the provided [comparator] or `null` if there are no elements. */ @SinceKotlin("1.4") public fun BooleanArray.minWithOrNull(comparator: Comparator): Boolean? { if (isEmpty()) return null var min = this[0] for (i in 1..lastIndex) { val e = this[i] if (comparator.compare(min, e) > 0) min = e } return min } /** * Returns the first element having the smallest value according to the provided [comparator] or `null` if there are no elements. */ @SinceKotlin("1.4") public fun CharArray.minWithOrNull(comparator: Comparator): Char? { if (isEmpty()) return null var min = this[0] for (i in 1..lastIndex) { val e = this[i] if (comparator.compare(min, e) > 0) min = e } return min } /** * Returns `true` if the array has no elements. * * @sample samples.collections.Collections.Aggregates.none */ public fun Array.none(): Boolean { return isEmpty() } /** * Returns `true` if the array has no elements. * * @sample samples.collections.Collections.Aggregates.none */ public fun ByteArray.none(): Boolean { return isEmpty() } /** * Returns `true` if the array has no elements. * * @sample samples.collections.Collections.Aggregates.none */ public fun ShortArray.none(): Boolean { return isEmpty() } /** * Returns `true` if the array has no elements. * * @sample samples.collections.Collections.Aggregates.none */ public fun IntArray.none(): Boolean { return isEmpty() } /** * Returns `true` if the array has no elements. * * @sample samples.collections.Collections.Aggregates.none */ public fun LongArray.none(): Boolean { return isEmpty() } /** * Returns `true` if the array has no elements. * * @sample samples.collections.Collections.Aggregates.none */ public fun FloatArray.none(): Boolean { return isEmpty() } /** * Returns `true` if the array has no elements. * * @sample samples.collections.Collections.Aggregates.none */ public fun DoubleArray.none(): Boolean { return isEmpty() } /** * Returns `true` if the array has no elements. * * @sample samples.collections.Collections.Aggregates.none */ public fun BooleanArray.none(): Boolean { return isEmpty() } /** * Returns `true` if the array has no elements. * * @sample samples.collections.Collections.Aggregates.none */ public fun CharArray.none(): Boolean { return isEmpty() } /** * Returns `true` if no elements match the given [predicate]. * * @sample samples.collections.Collections.Aggregates.noneWithPredicate */ public inline fun Array.none(predicate: (T) -> Boolean): Boolean { for (element in this) if (predicate(element)) return false return true } /** * Returns `true` if no elements match the given [predicate]. * * @sample samples.collections.Collections.Aggregates.noneWithPredicate */ public inline fun ByteArray.none(predicate: (Byte) -> Boolean): Boolean { for (element in this) if (predicate(element)) return false return true } /** * Returns `true` if no elements match the given [predicate]. * * @sample samples.collections.Collections.Aggregates.noneWithPredicate */ public inline fun ShortArray.none(predicate: (Short) -> Boolean): Boolean { for (element in this) if (predicate(element)) return false return true } /** * Returns `true` if no elements match the given [predicate]. * * @sample samples.collections.Collections.Aggregates.noneWithPredicate */ public inline fun IntArray.none(predicate: (Int) -> Boolean): Boolean { for (element in this) if (predicate(element)) return false return true } /** * Returns `true` if no elements match the given [predicate]. * * @sample samples.collections.Collections.Aggregates.noneWithPredicate */ public inline fun LongArray.none(predicate: (Long) -> Boolean): Boolean { for (element in this) if (predicate(element)) return false return true } /** * Returns `true` if no elements match the given [predicate]. * * @sample samples.collections.Collections.Aggregates.noneWithPredicate */ public inline fun FloatArray.none(predicate: (Float) -> Boolean): Boolean { for (element in this) if (predicate(element)) return false return true } /** * Returns `true` if no elements match the given [predicate]. * * @sample samples.collections.Collections.Aggregates.noneWithPredicate */ public inline fun DoubleArray.none(predicate: (Double) -> Boolean): Boolean { for (element in this) if (predicate(element)) return false return true } /** * Returns `true` if no elements match the given [predicate]. * * @sample samples.collections.Collections.Aggregates.noneWithPredicate */ public inline fun BooleanArray.none(predicate: (Boolean) -> Boolean): Boolean { for (element in this) if (predicate(element)) return false return true } /** * Returns `true` if no elements match the given [predicate]. * * @sample samples.collections.Collections.Aggregates.noneWithPredicate */ public inline fun CharArray.none(predicate: (Char) -> Boolean): Boolean { for (element in this) if (predicate(element)) return false return true } /** * Performs the given [action] on each element and returns the array itself afterwards. */ @SinceKotlin("1.4") @kotlin.internal.InlineOnly public inline fun Array.onEach(action: (T) -> Unit): Array { return apply { for (element in this) action(element) } } /** * Performs the given [action] on each element and returns the array itself afterwards. */ @SinceKotlin("1.4") @kotlin.internal.InlineOnly public inline fun ByteArray.onEach(action: (Byte) -> Unit): ByteArray { return apply { for (element in this) action(element) } } /** * Performs the given [action] on each element and returns the array itself afterwards. */ @SinceKotlin("1.4") @kotlin.internal.InlineOnly public inline fun ShortArray.onEach(action: (Short) -> Unit): ShortArray { return apply { for (element in this) action(element) } } /** * Performs the given [action] on each element and returns the array itself afterwards. */ @SinceKotlin("1.4") @kotlin.internal.InlineOnly public inline fun IntArray.onEach(action: (Int) -> Unit): IntArray { return apply { for (element in this) action(element) } } /** * Performs the given [action] on each element and returns the array itself afterwards. */ @SinceKotlin("1.4") @kotlin.internal.InlineOnly public inline fun LongArray.onEach(action: (Long) -> Unit): LongArray { return apply { for (element in this) action(element) } } /** * Performs the given [action] on each element and returns the array itself afterwards. */ @SinceKotlin("1.4") @kotlin.internal.InlineOnly public inline fun FloatArray.onEach(action: (Float) -> Unit): FloatArray { return apply { for (element in this) action(element) } } /** * Performs the given [action] on each element and returns the array itself afterwards. */ @SinceKotlin("1.4") @kotlin.internal.InlineOnly public inline fun DoubleArray.onEach(action: (Double) -> Unit): DoubleArray { return apply { for (element in this) action(element) } } /** * Performs the given [action] on each element and returns the array itself afterwards. */ @SinceKotlin("1.4") @kotlin.internal.InlineOnly public inline fun BooleanArray.onEach(action: (Boolean) -> Unit): BooleanArray { return apply { for (element in this) action(element) } } /** * Performs the given [action] on each element and returns the array itself afterwards. */ @SinceKotlin("1.4") @kotlin.internal.InlineOnly public inline fun CharArray.onEach(action: (Char) -> Unit): CharArray { return apply { for (element in this) action(element) } } /** * Performs the given [action] on each element, providing sequential index with the element, * and returns the array itself afterwards. * @param [action] function that takes the index of an element and the element itself * and performs the action on the element. */ @SinceKotlin("1.4") @kotlin.internal.InlineOnly public inline fun Array.onEachIndexed(action: (index: Int, T) -> Unit): Array { return apply { forEachIndexed(action) } } /** * Performs the given [action] on each element, providing sequential index with the element, * and returns the array itself afterwards. * @param [action] function that takes the index of an element and the element itself * and performs the action on the element. */ @SinceKotlin("1.4") @kotlin.internal.InlineOnly public inline fun ByteArray.onEachIndexed(action: (index: Int, Byte) -> Unit): ByteArray { return apply { forEachIndexed(action) } } /** * Performs the given [action] on each element, providing sequential index with the element, * and returns the array itself afterwards. * @param [action] function that takes the index of an element and the element itself * and performs the action on the element. */ @SinceKotlin("1.4") @kotlin.internal.InlineOnly public inline fun ShortArray.onEachIndexed(action: (index: Int, Short) -> Unit): ShortArray { return apply { forEachIndexed(action) } } /** * Performs the given [action] on each element, providing sequential index with the element, * and returns the array itself afterwards. * @param [action] function that takes the index of an element and the element itself * and performs the action on the element. */ @SinceKotlin("1.4") @kotlin.internal.InlineOnly public inline fun IntArray.onEachIndexed(action: (index: Int, Int) -> Unit): IntArray { return apply { forEachIndexed(action) } } /** * Performs the given [action] on each element, providing sequential index with the element, * and returns the array itself afterwards. * @param [action] function that takes the index of an element and the element itself * and performs the action on the element. */ @SinceKotlin("1.4") @kotlin.internal.InlineOnly public inline fun LongArray.onEachIndexed(action: (index: Int, Long) -> Unit): LongArray { return apply { forEachIndexed(action) } } /** * Performs the given [action] on each element, providing sequential index with the element, * and returns the array itself afterwards. * @param [action] function that takes the index of an element and the element itself * and performs the action on the element. */ @SinceKotlin("1.4") @kotlin.internal.InlineOnly public inline fun FloatArray.onEachIndexed(action: (index: Int, Float) -> Unit): FloatArray { return apply { forEachIndexed(action) } } /** * Performs the given [action] on each element, providing sequential index with the element, * and returns the array itself afterwards. * @param [action] function that takes the index of an element and the element itself * and performs the action on the element. */ @SinceKotlin("1.4") @kotlin.internal.InlineOnly public inline fun DoubleArray.onEachIndexed(action: (index: Int, Double) -> Unit): DoubleArray { return apply { forEachIndexed(action) } } /** * Performs the given [action] on each element, providing sequential index with the element, * and returns the array itself afterwards. * @param [action] function that takes the index of an element and the element itself * and performs the action on the element. */ @SinceKotlin("1.4") @kotlin.internal.InlineOnly public inline fun BooleanArray.onEachIndexed(action: (index: Int, Boolean) -> Unit): BooleanArray { return apply { forEachIndexed(action) } } /** * Performs the given [action] on each element, providing sequential index with the element, * and returns the array itself afterwards. * @param [action] function that takes the index of an element and the element itself * and performs the action on the element. */ @SinceKotlin("1.4") @kotlin.internal.InlineOnly public inline fun CharArray.onEachIndexed(action: (index: Int, Char) -> Unit): CharArray { return apply { forEachIndexed(action) } } /** * Accumulates value starting with the first element and applying [operation] from left to right * to current accumulator value and each element. * * Throws an exception if this array is empty. If the array can be empty in an expected way, * please use [reduceOrNull] instead. It returns `null` when its receiver is empty. * * @param [operation] function that takes current accumulator value and an element, * and calculates the next accumulator value. * * @sample samples.collections.Collections.Aggregates.reduce */ public inline fun Array.reduce(operation: (acc: S, T) -> S): S { if (isEmpty()) throw UnsupportedOperationException("Empty array can't be reduced.") var accumulator: S = this[0] for (index in 1..lastIndex) { accumulator = operation(accumulator, this[index]) } return accumulator } /** * Accumulates value starting with the first element and applying [operation] from left to right * to current accumulator value and each element. * * Throws an exception if this array is empty. If the array can be empty in an expected way, * please use [reduceOrNull] instead. It returns `null` when its receiver is empty. * * @param [operation] function that takes current accumulator value and an element, * and calculates the next accumulator value. * * @sample samples.collections.Collections.Aggregates.reduce */ public inline fun ByteArray.reduce(operation: (acc: Byte, Byte) -> Byte): Byte { if (isEmpty()) throw UnsupportedOperationException("Empty array can't be reduced.") var accumulator = this[0] for (index in 1..lastIndex) { accumulator = operation(accumulator, this[index]) } return accumulator } /** * Accumulates value starting with the first element and applying [operation] from left to right * to current accumulator value and each element. * * Throws an exception if this array is empty. If the array can be empty in an expected way, * please use [reduceOrNull] instead. It returns `null` when its receiver is empty. * * @param [operation] function that takes current accumulator value and an element, * and calculates the next accumulator value. * * @sample samples.collections.Collections.Aggregates.reduce */ public inline fun ShortArray.reduce(operation: (acc: Short, Short) -> Short): Short { if (isEmpty()) throw UnsupportedOperationException("Empty array can't be reduced.") var accumulator = this[0] for (index in 1..lastIndex) { accumulator = operation(accumulator, this[index]) } return accumulator } /** * Accumulates value starting with the first element and applying [operation] from left to right * to current accumulator value and each element. * * Throws an exception if this array is empty. If the array can be empty in an expected way, * please use [reduceOrNull] instead. It returns `null` when its receiver is empty. * * @param [operation] function that takes current accumulator value and an element, * and calculates the next accumulator value. * * @sample samples.collections.Collections.Aggregates.reduce */ public inline fun IntArray.reduce(operation: (acc: Int, Int) -> Int): Int { if (isEmpty()) throw UnsupportedOperationException("Empty array can't be reduced.") var accumulator = this[0] for (index in 1..lastIndex) { accumulator = operation(accumulator, this[index]) } return accumulator } /** * Accumulates value starting with the first element and applying [operation] from left to right * to current accumulator value and each element. * * Throws an exception if this array is empty. If the array can be empty in an expected way, * please use [reduceOrNull] instead. It returns `null` when its receiver is empty. * * @param [operation] function that takes current accumulator value and an element, * and calculates the next accumulator value. * * @sample samples.collections.Collections.Aggregates.reduce */ public inline fun LongArray.reduce(operation: (acc: Long, Long) -> Long): Long { if (isEmpty()) throw UnsupportedOperationException("Empty array can't be reduced.") var accumulator = this[0] for (index in 1..lastIndex) { accumulator = operation(accumulator, this[index]) } return accumulator } /** * Accumulates value starting with the first element and applying [operation] from left to right * to current accumulator value and each element. * * Throws an exception if this array is empty. If the array can be empty in an expected way, * please use [reduceOrNull] instead. It returns `null` when its receiver is empty. * * @param [operation] function that takes current accumulator value and an element, * and calculates the next accumulator value. * * @sample samples.collections.Collections.Aggregates.reduce */ public inline fun FloatArray.reduce(operation: (acc: Float, Float) -> Float): Float { if (isEmpty()) throw UnsupportedOperationException("Empty array can't be reduced.") var accumulator = this[0] for (index in 1..lastIndex) { accumulator = operation(accumulator, this[index]) } return accumulator } /** * Accumulates value starting with the first element and applying [operation] from left to right * to current accumulator value and each element. * * Throws an exception if this array is empty. If the array can be empty in an expected way, * please use [reduceOrNull] instead. It returns `null` when its receiver is empty. * * @param [operation] function that takes current accumulator value and an element, * and calculates the next accumulator value. * * @sample samples.collections.Collections.Aggregates.reduce */ public inline fun DoubleArray.reduce(operation: (acc: Double, Double) -> Double): Double { if (isEmpty()) throw UnsupportedOperationException("Empty array can't be reduced.") var accumulator = this[0] for (index in 1..lastIndex) { accumulator = operation(accumulator, this[index]) } return accumulator } /** * Accumulates value starting with the first element and applying [operation] from left to right * to current accumulator value and each element. * * Throws an exception if this array is empty. If the array can be empty in an expected way, * please use [reduceOrNull] instead. It returns `null` when its receiver is empty. * * @param [operation] function that takes current accumulator value and an element, * and calculates the next accumulator value. * * @sample samples.collections.Collections.Aggregates.reduce */ public inline fun BooleanArray.reduce(operation: (acc: Boolean, Boolean) -> Boolean): Boolean { if (isEmpty()) throw UnsupportedOperationException("Empty array can't be reduced.") var accumulator = this[0] for (index in 1..lastIndex) { accumulator = operation(accumulator, this[index]) } return accumulator } /** * Accumulates value starting with the first element and applying [operation] from left to right * to current accumulator value and each element. * * Throws an exception if this array is empty. If the array can be empty in an expected way, * please use [reduceOrNull] instead. It returns `null` when its receiver is empty. * * @param [operation] function that takes current accumulator value and an element, * and calculates the next accumulator value. * * @sample samples.collections.Collections.Aggregates.reduce */ public inline fun CharArray.reduce(operation: (acc: Char, Char) -> Char): Char { if (isEmpty()) throw UnsupportedOperationException("Empty array can't be reduced.") var accumulator = this[0] for (index in 1..lastIndex) { accumulator = operation(accumulator, this[index]) } return accumulator } /** * Accumulates value starting with the first element and applying [operation] from left to right * to current accumulator value and each element with its index in the original array. * * Throws an exception if this array is empty. If the array can be empty in an expected way, * please use [reduceIndexedOrNull] instead. It returns `null` when its receiver is empty. * * @param [operation] function that takes the index of an element, current accumulator value and the element itself, * and calculates the next accumulator value. * * @sample samples.collections.Collections.Aggregates.reduce */ public inline fun Array.reduceIndexed(operation: (index: Int, acc: S, T) -> S): S { if (isEmpty()) throw UnsupportedOperationException("Empty array can't be reduced.") var accumulator: S = this[0] for (index in 1..lastIndex) { accumulator = operation(index, accumulator, this[index]) } return accumulator } /** * Accumulates value starting with the first element and applying [operation] from left to right * to current accumulator value and each element with its index in the original array. * * Throws an exception if this array is empty. If the array can be empty in an expected way, * please use [reduceIndexedOrNull] instead. It returns `null` when its receiver is empty. * * @param [operation] function that takes the index of an element, current accumulator value and the element itself, * and calculates the next accumulator value. * * @sample samples.collections.Collections.Aggregates.reduce */ public inline fun ByteArray.reduceIndexed(operation: (index: Int, acc: Byte, Byte) -> Byte): Byte { if (isEmpty()) throw UnsupportedOperationException("Empty array can't be reduced.") var accumulator = this[0] for (index in 1..lastIndex) { accumulator = operation(index, accumulator, this[index]) } return accumulator } /** * Accumulates value starting with the first element and applying [operation] from left to right * to current accumulator value and each element with its index in the original array. * * Throws an exception if this array is empty. If the array can be empty in an expected way, * please use [reduceIndexedOrNull] instead. It returns `null` when its receiver is empty. * * @param [operation] function that takes the index of an element, current accumulator value and the element itself, * and calculates the next accumulator value. * * @sample samples.collections.Collections.Aggregates.reduce */ public inline fun ShortArray.reduceIndexed(operation: (index: Int, acc: Short, Short) -> Short): Short { if (isEmpty()) throw UnsupportedOperationException("Empty array can't be reduced.") var accumulator = this[0] for (index in 1..lastIndex) { accumulator = operation(index, accumulator, this[index]) } return accumulator } /** * Accumulates value starting with the first element and applying [operation] from left to right * to current accumulator value and each element with its index in the original array. * * Throws an exception if this array is empty. If the array can be empty in an expected way, * please use [reduceIndexedOrNull] instead. It returns `null` when its receiver is empty. * * @param [operation] function that takes the index of an element, current accumulator value and the element itself, * and calculates the next accumulator value. * * @sample samples.collections.Collections.Aggregates.reduce */ public inline fun IntArray.reduceIndexed(operation: (index: Int, acc: Int, Int) -> Int): Int { if (isEmpty()) throw UnsupportedOperationException("Empty array can't be reduced.") var accumulator = this[0] for (index in 1..lastIndex) { accumulator = operation(index, accumulator, this[index]) } return accumulator } /** * Accumulates value starting with the first element and applying [operation] from left to right * to current accumulator value and each element with its index in the original array. * * Throws an exception if this array is empty. If the array can be empty in an expected way, * please use [reduceIndexedOrNull] instead. It returns `null` when its receiver is empty. * * @param [operation] function that takes the index of an element, current accumulator value and the element itself, * and calculates the next accumulator value. * * @sample samples.collections.Collections.Aggregates.reduce */ public inline fun LongArray.reduceIndexed(operation: (index: Int, acc: Long, Long) -> Long): Long { if (isEmpty()) throw UnsupportedOperationException("Empty array can't be reduced.") var accumulator = this[0] for (index in 1..lastIndex) { accumulator = operation(index, accumulator, this[index]) } return accumulator } /** * Accumulates value starting with the first element and applying [operation] from left to right * to current accumulator value and each element with its index in the original array. * * Throws an exception if this array is empty. If the array can be empty in an expected way, * please use [reduceIndexedOrNull] instead. It returns `null` when its receiver is empty. * * @param [operation] function that takes the index of an element, current accumulator value and the element itself, * and calculates the next accumulator value. * * @sample samples.collections.Collections.Aggregates.reduce */ public inline fun FloatArray.reduceIndexed(operation: (index: Int, acc: Float, Float) -> Float): Float { if (isEmpty()) throw UnsupportedOperationException("Empty array can't be reduced.") var accumulator = this[0] for (index in 1..lastIndex) { accumulator = operation(index, accumulator, this[index]) } return accumulator } /** * Accumulates value starting with the first element and applying [operation] from left to right * to current accumulator value and each element with its index in the original array. * * Throws an exception if this array is empty. If the array can be empty in an expected way, * please use [reduceIndexedOrNull] instead. It returns `null` when its receiver is empty. * * @param [operation] function that takes the index of an element, current accumulator value and the element itself, * and calculates the next accumulator value. * * @sample samples.collections.Collections.Aggregates.reduce */ public inline fun DoubleArray.reduceIndexed(operation: (index: Int, acc: Double, Double) -> Double): Double { if (isEmpty()) throw UnsupportedOperationException("Empty array can't be reduced.") var accumulator = this[0] for (index in 1..lastIndex) { accumulator = operation(index, accumulator, this[index]) } return accumulator } /** * Accumulates value starting with the first element and applying [operation] from left to right * to current accumulator value and each element with its index in the original array. * * Throws an exception if this array is empty. If the array can be empty in an expected way, * please use [reduceIndexedOrNull] instead. It returns `null` when its receiver is empty. * * @param [operation] function that takes the index of an element, current accumulator value and the element itself, * and calculates the next accumulator value. * * @sample samples.collections.Collections.Aggregates.reduce */ public inline fun BooleanArray.reduceIndexed(operation: (index: Int, acc: Boolean, Boolean) -> Boolean): Boolean { if (isEmpty()) throw UnsupportedOperationException("Empty array can't be reduced.") var accumulator = this[0] for (index in 1..lastIndex) { accumulator = operation(index, accumulator, this[index]) } return accumulator } /** * Accumulates value starting with the first element and applying [operation] from left to right * to current accumulator value and each element with its index in the original array. * * Throws an exception if this array is empty. If the array can be empty in an expected way, * please use [reduceIndexedOrNull] instead. It returns `null` when its receiver is empty. * * @param [operation] function that takes the index of an element, current accumulator value and the element itself, * and calculates the next accumulator value. * * @sample samples.collections.Collections.Aggregates.reduce */ public inline fun CharArray.reduceIndexed(operation: (index: Int, acc: Char, Char) -> Char): Char { if (isEmpty()) throw UnsupportedOperationException("Empty array can't be reduced.") var accumulator = this[0] for (index in 1..lastIndex) { accumulator = operation(index, accumulator, this[index]) } return accumulator } /** * Accumulates value starting with the first element and applying [operation] from left to right * to current accumulator value and each element with its index in the original array. * * Returns `null` if the array is empty. * * @param [operation] function that takes the index of an element, current accumulator value and the element itself, * and calculates the next accumulator value. * * @sample samples.collections.Collections.Aggregates.reduceOrNull */ @SinceKotlin("1.4") public inline fun Array.reduceIndexedOrNull(operation: (index: Int, acc: S, T) -> S): S? { if (isEmpty()) return null var accumulator: S = this[0] for (index in 1..lastIndex) { accumulator = operation(index, accumulator, this[index]) } return accumulator } /** * Accumulates value starting with the first element and applying [operation] from left to right * to current accumulator value and each element with its index in the original array. * * Returns `null` if the array is empty. * * @param [operation] function that takes the index of an element, current accumulator value and the element itself, * and calculates the next accumulator value. * * @sample samples.collections.Collections.Aggregates.reduceOrNull */ @SinceKotlin("1.4") public inline fun ByteArray.reduceIndexedOrNull(operation: (index: Int, acc: Byte, Byte) -> Byte): Byte? { if (isEmpty()) return null var accumulator = this[0] for (index in 1..lastIndex) { accumulator = operation(index, accumulator, this[index]) } return accumulator } /** * Accumulates value starting with the first element and applying [operation] from left to right * to current accumulator value and each element with its index in the original array. * * Returns `null` if the array is empty. * * @param [operation] function that takes the index of an element, current accumulator value and the element itself, * and calculates the next accumulator value. * * @sample samples.collections.Collections.Aggregates.reduceOrNull */ @SinceKotlin("1.4") public inline fun ShortArray.reduceIndexedOrNull(operation: (index: Int, acc: Short, Short) -> Short): Short? { if (isEmpty()) return null var accumulator = this[0] for (index in 1..lastIndex) { accumulator = operation(index, accumulator, this[index]) } return accumulator } /** * Accumulates value starting with the first element and applying [operation] from left to right * to current accumulator value and each element with its index in the original array. * * Returns `null` if the array is empty. * * @param [operation] function that takes the index of an element, current accumulator value and the element itself, * and calculates the next accumulator value. * * @sample samples.collections.Collections.Aggregates.reduceOrNull */ @SinceKotlin("1.4") public inline fun IntArray.reduceIndexedOrNull(operation: (index: Int, acc: Int, Int) -> Int): Int? { if (isEmpty()) return null var accumulator = this[0] for (index in 1..lastIndex) { accumulator = operation(index, accumulator, this[index]) } return accumulator } /** * Accumulates value starting with the first element and applying [operation] from left to right * to current accumulator value and each element with its index in the original array. * * Returns `null` if the array is empty. * * @param [operation] function that takes the index of an element, current accumulator value and the element itself, * and calculates the next accumulator value. * * @sample samples.collections.Collections.Aggregates.reduceOrNull */ @SinceKotlin("1.4") public inline fun LongArray.reduceIndexedOrNull(operation: (index: Int, acc: Long, Long) -> Long): Long? { if (isEmpty()) return null var accumulator = this[0] for (index in 1..lastIndex) { accumulator = operation(index, accumulator, this[index]) } return accumulator } /** * Accumulates value starting with the first element and applying [operation] from left to right * to current accumulator value and each element with its index in the original array. * * Returns `null` if the array is empty. * * @param [operation] function that takes the index of an element, current accumulator value and the element itself, * and calculates the next accumulator value. * * @sample samples.collections.Collections.Aggregates.reduceOrNull */ @SinceKotlin("1.4") public inline fun FloatArray.reduceIndexedOrNull(operation: (index: Int, acc: Float, Float) -> Float): Float? { if (isEmpty()) return null var accumulator = this[0] for (index in 1..lastIndex) { accumulator = operation(index, accumulator, this[index]) } return accumulator } /** * Accumulates value starting with the first element and applying [operation] from left to right * to current accumulator value and each element with its index in the original array. * * Returns `null` if the array is empty. * * @param [operation] function that takes the index of an element, current accumulator value and the element itself, * and calculates the next accumulator value. * * @sample samples.collections.Collections.Aggregates.reduceOrNull */ @SinceKotlin("1.4") public inline fun DoubleArray.reduceIndexedOrNull(operation: (index: Int, acc: Double, Double) -> Double): Double? { if (isEmpty()) return null var accumulator = this[0] for (index in 1..lastIndex) { accumulator = operation(index, accumulator, this[index]) } return accumulator } /** * Accumulates value starting with the first element and applying [operation] from left to right * to current accumulator value and each element with its index in the original array. * * Returns `null` if the array is empty. * * @param [operation] function that takes the index of an element, current accumulator value and the element itself, * and calculates the next accumulator value. * * @sample samples.collections.Collections.Aggregates.reduceOrNull */ @SinceKotlin("1.4") public inline fun BooleanArray.reduceIndexedOrNull(operation: (index: Int, acc: Boolean, Boolean) -> Boolean): Boolean? { if (isEmpty()) return null var accumulator = this[0] for (index in 1..lastIndex) { accumulator = operation(index, accumulator, this[index]) } return accumulator } /** * Accumulates value starting with the first element and applying [operation] from left to right * to current accumulator value and each element with its index in the original array. * * Returns `null` if the array is empty. * * @param [operation] function that takes the index of an element, current accumulator value and the element itself, * and calculates the next accumulator value. * * @sample samples.collections.Collections.Aggregates.reduceOrNull */ @SinceKotlin("1.4") public inline fun CharArray.reduceIndexedOrNull(operation: (index: Int, acc: Char, Char) -> Char): Char? { if (isEmpty()) return null var accumulator = this[0] for (index in 1..lastIndex) { accumulator = operation(index, accumulator, this[index]) } return accumulator } /** * Accumulates value starting with the first element and applying [operation] from left to right * to current accumulator value and each element. * * Returns `null` if the array is empty. * * @param [operation] function that takes current accumulator value and an element, * and calculates the next accumulator value. * * @sample samples.collections.Collections.Aggregates.reduceOrNull */ @SinceKotlin("1.4") public inline fun Array.reduceOrNull(operation: (acc: S, T) -> S): S? { if (isEmpty()) return null var accumulator: S = this[0] for (index in 1..lastIndex) { accumulator = operation(accumulator, this[index]) } return accumulator } /** * Accumulates value starting with the first element and applying [operation] from left to right * to current accumulator value and each element. * * Returns `null` if the array is empty. * * @param [operation] function that takes current accumulator value and an element, * and calculates the next accumulator value. * * @sample samples.collections.Collections.Aggregates.reduceOrNull */ @SinceKotlin("1.4") public inline fun ByteArray.reduceOrNull(operation: (acc: Byte, Byte) -> Byte): Byte? { if (isEmpty()) return null var accumulator = this[0] for (index in 1..lastIndex) { accumulator = operation(accumulator, this[index]) } return accumulator } /** * Accumulates value starting with the first element and applying [operation] from left to right * to current accumulator value and each element. * * Returns `null` if the array is empty. * * @param [operation] function that takes current accumulator value and an element, * and calculates the next accumulator value. * * @sample samples.collections.Collections.Aggregates.reduceOrNull */ @SinceKotlin("1.4") public inline fun ShortArray.reduceOrNull(operation: (acc: Short, Short) -> Short): Short? { if (isEmpty()) return null var accumulator = this[0] for (index in 1..lastIndex) { accumulator = operation(accumulator, this[index]) } return accumulator } /** * Accumulates value starting with the first element and applying [operation] from left to right * to current accumulator value and each element. * * Returns `null` if the array is empty. * * @param [operation] function that takes current accumulator value and an element, * and calculates the next accumulator value. * * @sample samples.collections.Collections.Aggregates.reduceOrNull */ @SinceKotlin("1.4") public inline fun IntArray.reduceOrNull(operation: (acc: Int, Int) -> Int): Int? { if (isEmpty()) return null var accumulator = this[0] for (index in 1..lastIndex) { accumulator = operation(accumulator, this[index]) } return accumulator } /** * Accumulates value starting with the first element and applying [operation] from left to right * to current accumulator value and each element. * * Returns `null` if the array is empty. * * @param [operation] function that takes current accumulator value and an element, * and calculates the next accumulator value. * * @sample samples.collections.Collections.Aggregates.reduceOrNull */ @SinceKotlin("1.4") public inline fun LongArray.reduceOrNull(operation: (acc: Long, Long) -> Long): Long? { if (isEmpty()) return null var accumulator = this[0] for (index in 1..lastIndex) { accumulator = operation(accumulator, this[index]) } return accumulator } /** * Accumulates value starting with the first element and applying [operation] from left to right * to current accumulator value and each element. * * Returns `null` if the array is empty. * * @param [operation] function that takes current accumulator value and an element, * and calculates the next accumulator value. * * @sample samples.collections.Collections.Aggregates.reduceOrNull */ @SinceKotlin("1.4") public inline fun FloatArray.reduceOrNull(operation: (acc: Float, Float) -> Float): Float? { if (isEmpty()) return null var accumulator = this[0] for (index in 1..lastIndex) { accumulator = operation(accumulator, this[index]) } return accumulator } /** * Accumulates value starting with the first element and applying [operation] from left to right * to current accumulator value and each element. * * Returns `null` if the array is empty. * * @param [operation] function that takes current accumulator value and an element, * and calculates the next accumulator value. * * @sample samples.collections.Collections.Aggregates.reduceOrNull */ @SinceKotlin("1.4") public inline fun DoubleArray.reduceOrNull(operation: (acc: Double, Double) -> Double): Double? { if (isEmpty()) return null var accumulator = this[0] for (index in 1..lastIndex) { accumulator = operation(accumulator, this[index]) } return accumulator } /** * Accumulates value starting with the first element and applying [operation] from left to right * to current accumulator value and each element. * * Returns `null` if the array is empty. * * @param [operation] function that takes current accumulator value and an element, * and calculates the next accumulator value. * * @sample samples.collections.Collections.Aggregates.reduceOrNull */ @SinceKotlin("1.4") public inline fun BooleanArray.reduceOrNull(operation: (acc: Boolean, Boolean) -> Boolean): Boolean? { if (isEmpty()) return null var accumulator = this[0] for (index in 1..lastIndex) { accumulator = operation(accumulator, this[index]) } return accumulator } /** * Accumulates value starting with the first element and applying [operation] from left to right * to current accumulator value and each element. * * Returns `null` if the array is empty. * * @param [operation] function that takes current accumulator value and an element, * and calculates the next accumulator value. * * @sample samples.collections.Collections.Aggregates.reduceOrNull */ @SinceKotlin("1.4") public inline fun CharArray.reduceOrNull(operation: (acc: Char, Char) -> Char): Char? { if (isEmpty()) return null var accumulator = this[0] for (index in 1..lastIndex) { accumulator = operation(accumulator, this[index]) } return accumulator } /** * Accumulates value starting with the last element and applying [operation] from right to left * to each element and current accumulator value. * * Throws an exception if this array is empty. If the array can be empty in an expected way, * please use [reduceRightOrNull] instead. It returns `null` when its receiver is empty. * * @param [operation] function that takes an element and current accumulator value, * and calculates the next accumulator value. * * @sample samples.collections.Collections.Aggregates.reduceRight */ public inline fun Array.reduceRight(operation: (T, acc: S) -> S): S { var index = lastIndex if (index < 0) throw UnsupportedOperationException("Empty array can't be reduced.") var accumulator: S = get(index--) while (index >= 0) { accumulator = operation(get(index--), accumulator) } return accumulator } /** * Accumulates value starting with the last element and applying [operation] from right to left * to each element and current accumulator value. * * Throws an exception if this array is empty. If the array can be empty in an expected way, * please use [reduceRightOrNull] instead. It returns `null` when its receiver is empty. * * @param [operation] function that takes an element and current accumulator value, * and calculates the next accumulator value. * * @sample samples.collections.Collections.Aggregates.reduceRight */ public inline fun ByteArray.reduceRight(operation: (Byte, acc: Byte) -> Byte): Byte { var index = lastIndex if (index < 0) throw UnsupportedOperationException("Empty array can't be reduced.") var accumulator = get(index--) while (index >= 0) { accumulator = operation(get(index--), accumulator) } return accumulator } /** * Accumulates value starting with the last element and applying [operation] from right to left * to each element and current accumulator value. * * Throws an exception if this array is empty. If the array can be empty in an expected way, * please use [reduceRightOrNull] instead. It returns `null` when its receiver is empty. * * @param [operation] function that takes an element and current accumulator value, * and calculates the next accumulator value. * * @sample samples.collections.Collections.Aggregates.reduceRight */ public inline fun ShortArray.reduceRight(operation: (Short, acc: Short) -> Short): Short { var index = lastIndex if (index < 0) throw UnsupportedOperationException("Empty array can't be reduced.") var accumulator = get(index--) while (index >= 0) { accumulator = operation(get(index--), accumulator) } return accumulator } /** * Accumulates value starting with the last element and applying [operation] from right to left * to each element and current accumulator value. * * Throws an exception if this array is empty. If the array can be empty in an expected way, * please use [reduceRightOrNull] instead. It returns `null` when its receiver is empty. * * @param [operation] function that takes an element and current accumulator value, * and calculates the next accumulator value. * * @sample samples.collections.Collections.Aggregates.reduceRight */ public inline fun IntArray.reduceRight(operation: (Int, acc: Int) -> Int): Int { var index = lastIndex if (index < 0) throw UnsupportedOperationException("Empty array can't be reduced.") var accumulator = get(index--) while (index >= 0) { accumulator = operation(get(index--), accumulator) } return accumulator } /** * Accumulates value starting with the last element and applying [operation] from right to left * to each element and current accumulator value. * * Throws an exception if this array is empty. If the array can be empty in an expected way, * please use [reduceRightOrNull] instead. It returns `null` when its receiver is empty. * * @param [operation] function that takes an element and current accumulator value, * and calculates the next accumulator value. * * @sample samples.collections.Collections.Aggregates.reduceRight */ public inline fun LongArray.reduceRight(operation: (Long, acc: Long) -> Long): Long { var index = lastIndex if (index < 0) throw UnsupportedOperationException("Empty array can't be reduced.") var accumulator = get(index--) while (index >= 0) { accumulator = operation(get(index--), accumulator) } return accumulator } /** * Accumulates value starting with the last element and applying [operation] from right to left * to each element and current accumulator value. * * Throws an exception if this array is empty. If the array can be empty in an expected way, * please use [reduceRightOrNull] instead. It returns `null` when its receiver is empty. * * @param [operation] function that takes an element and current accumulator value, * and calculates the next accumulator value. * * @sample samples.collections.Collections.Aggregates.reduceRight */ public inline fun FloatArray.reduceRight(operation: (Float, acc: Float) -> Float): Float { var index = lastIndex if (index < 0) throw UnsupportedOperationException("Empty array can't be reduced.") var accumulator = get(index--) while (index >= 0) { accumulator = operation(get(index--), accumulator) } return accumulator } /** * Accumulates value starting with the last element and applying [operation] from right to left * to each element and current accumulator value. * * Throws an exception if this array is empty. If the array can be empty in an expected way, * please use [reduceRightOrNull] instead. It returns `null` when its receiver is empty. * * @param [operation] function that takes an element and current accumulator value, * and calculates the next accumulator value. * * @sample samples.collections.Collections.Aggregates.reduceRight */ public inline fun DoubleArray.reduceRight(operation: (Double, acc: Double) -> Double): Double { var index = lastIndex if (index < 0) throw UnsupportedOperationException("Empty array can't be reduced.") var accumulator = get(index--) while (index >= 0) { accumulator = operation(get(index--), accumulator) } return accumulator } /** * Accumulates value starting with the last element and applying [operation] from right to left * to each element and current accumulator value. * * Throws an exception if this array is empty. If the array can be empty in an expected way, * please use [reduceRightOrNull] instead. It returns `null` when its receiver is empty. * * @param [operation] function that takes an element and current accumulator value, * and calculates the next accumulator value. * * @sample samples.collections.Collections.Aggregates.reduceRight */ public inline fun BooleanArray.reduceRight(operation: (Boolean, acc: Boolean) -> Boolean): Boolean { var index = lastIndex if (index < 0) throw UnsupportedOperationException("Empty array can't be reduced.") var accumulator = get(index--) while (index >= 0) { accumulator = operation(get(index--), accumulator) } return accumulator } /** * Accumulates value starting with the last element and applying [operation] from right to left * to each element and current accumulator value. * * Throws an exception if this array is empty. If the array can be empty in an expected way, * please use [reduceRightOrNull] instead. It returns `null` when its receiver is empty. * * @param [operation] function that takes an element and current accumulator value, * and calculates the next accumulator value. * * @sample samples.collections.Collections.Aggregates.reduceRight */ public inline fun CharArray.reduceRight(operation: (Char, acc: Char) -> Char): Char { var index = lastIndex if (index < 0) throw UnsupportedOperationException("Empty array can't be reduced.") var accumulator = get(index--) while (index >= 0) { accumulator = operation(get(index--), accumulator) } return accumulator } /** * Accumulates value starting with the last element and applying [operation] from right to left * to each element with its index in the original array and current accumulator value. * * Throws an exception if this array is empty. If the array can be empty in an expected way, * please use [reduceRightIndexedOrNull] instead. It returns `null` when its receiver is empty. * * @param [operation] function that takes the index of an element, the element itself and current accumulator value, * and calculates the next accumulator value. * * @sample samples.collections.Collections.Aggregates.reduceRight */ public inline fun Array.reduceRightIndexed(operation: (index: Int, T, acc: S) -> S): S { var index = lastIndex if (index < 0) throw UnsupportedOperationException("Empty array can't be reduced.") var accumulator: S = get(index--) while (index >= 0) { accumulator = operation(index, get(index), accumulator) --index } return accumulator } /** * Accumulates value starting with the last element and applying [operation] from right to left * to each element with its index in the original array and current accumulator value. * * Throws an exception if this array is empty. If the array can be empty in an expected way, * please use [reduceRightIndexedOrNull] instead. It returns `null` when its receiver is empty. * * @param [operation] function that takes the index of an element, the element itself and current accumulator value, * and calculates the next accumulator value. * * @sample samples.collections.Collections.Aggregates.reduceRight */ public inline fun ByteArray.reduceRightIndexed(operation: (index: Int, Byte, acc: Byte) -> Byte): Byte { var index = lastIndex if (index < 0) throw UnsupportedOperationException("Empty array can't be reduced.") var accumulator = get(index--) while (index >= 0) { accumulator = operation(index, get(index), accumulator) --index } return accumulator } /** * Accumulates value starting with the last element and applying [operation] from right to left * to each element with its index in the original array and current accumulator value. * * Throws an exception if this array is empty. If the array can be empty in an expected way, * please use [reduceRightIndexedOrNull] instead. It returns `null` when its receiver is empty. * * @param [operation] function that takes the index of an element, the element itself and current accumulator value, * and calculates the next accumulator value. * * @sample samples.collections.Collections.Aggregates.reduceRight */ public inline fun ShortArray.reduceRightIndexed(operation: (index: Int, Short, acc: Short) -> Short): Short { var index = lastIndex if (index < 0) throw UnsupportedOperationException("Empty array can't be reduced.") var accumulator = get(index--) while (index >= 0) { accumulator = operation(index, get(index), accumulator) --index } return accumulator } /** * Accumulates value starting with the last element and applying [operation] from right to left * to each element with its index in the original array and current accumulator value. * * Throws an exception if this array is empty. If the array can be empty in an expected way, * please use [reduceRightIndexedOrNull] instead. It returns `null` when its receiver is empty. * * @param [operation] function that takes the index of an element, the element itself and current accumulator value, * and calculates the next accumulator value. * * @sample samples.collections.Collections.Aggregates.reduceRight */ public inline fun IntArray.reduceRightIndexed(operation: (index: Int, Int, acc: Int) -> Int): Int { var index = lastIndex if (index < 0) throw UnsupportedOperationException("Empty array can't be reduced.") var accumulator = get(index--) while (index >= 0) { accumulator = operation(index, get(index), accumulator) --index } return accumulator } /** * Accumulates value starting with the last element and applying [operation] from right to left * to each element with its index in the original array and current accumulator value. * * Throws an exception if this array is empty. If the array can be empty in an expected way, * please use [reduceRightIndexedOrNull] instead. It returns `null` when its receiver is empty. * * @param [operation] function that takes the index of an element, the element itself and current accumulator value, * and calculates the next accumulator value. * * @sample samples.collections.Collections.Aggregates.reduceRight */ public inline fun LongArray.reduceRightIndexed(operation: (index: Int, Long, acc: Long) -> Long): Long { var index = lastIndex if (index < 0) throw UnsupportedOperationException("Empty array can't be reduced.") var accumulator = get(index--) while (index >= 0) { accumulator = operation(index, get(index), accumulator) --index } return accumulator } /** * Accumulates value starting with the last element and applying [operation] from right to left * to each element with its index in the original array and current accumulator value. * * Throws an exception if this array is empty. If the array can be empty in an expected way, * please use [reduceRightIndexedOrNull] instead. It returns `null` when its receiver is empty. * * @param [operation] function that takes the index of an element, the element itself and current accumulator value, * and calculates the next accumulator value. * * @sample samples.collections.Collections.Aggregates.reduceRight */ public inline fun FloatArray.reduceRightIndexed(operation: (index: Int, Float, acc: Float) -> Float): Float { var index = lastIndex if (index < 0) throw UnsupportedOperationException("Empty array can't be reduced.") var accumulator = get(index--) while (index >= 0) { accumulator = operation(index, get(index), accumulator) --index } return accumulator } /** * Accumulates value starting with the last element and applying [operation] from right to left * to each element with its index in the original array and current accumulator value. * * Throws an exception if this array is empty. If the array can be empty in an expected way, * please use [reduceRightIndexedOrNull] instead. It returns `null` when its receiver is empty. * * @param [operation] function that takes the index of an element, the element itself and current accumulator value, * and calculates the next accumulator value. * * @sample samples.collections.Collections.Aggregates.reduceRight */ public inline fun DoubleArray.reduceRightIndexed(operation: (index: Int, Double, acc: Double) -> Double): Double { var index = lastIndex if (index < 0) throw UnsupportedOperationException("Empty array can't be reduced.") var accumulator = get(index--) while (index >= 0) { accumulator = operation(index, get(index), accumulator) --index } return accumulator } /** * Accumulates value starting with the last element and applying [operation] from right to left * to each element with its index in the original array and current accumulator value. * * Throws an exception if this array is empty. If the array can be empty in an expected way, * please use [reduceRightIndexedOrNull] instead. It returns `null` when its receiver is empty. * * @param [operation] function that takes the index of an element, the element itself and current accumulator value, * and calculates the next accumulator value. * * @sample samples.collections.Collections.Aggregates.reduceRight */ public inline fun BooleanArray.reduceRightIndexed(operation: (index: Int, Boolean, acc: Boolean) -> Boolean): Boolean { var index = lastIndex if (index < 0) throw UnsupportedOperationException("Empty array can't be reduced.") var accumulator = get(index--) while (index >= 0) { accumulator = operation(index, get(index), accumulator) --index } return accumulator } /** * Accumulates value starting with the last element and applying [operation] from right to left * to each element with its index in the original array and current accumulator value. * * Throws an exception if this array is empty. If the array can be empty in an expected way, * please use [reduceRightIndexedOrNull] instead. It returns `null` when its receiver is empty. * * @param [operation] function that takes the index of an element, the element itself and current accumulator value, * and calculates the next accumulator value. * * @sample samples.collections.Collections.Aggregates.reduceRight */ public inline fun CharArray.reduceRightIndexed(operation: (index: Int, Char, acc: Char) -> Char): Char { var index = lastIndex if (index < 0) throw UnsupportedOperationException("Empty array can't be reduced.") var accumulator = get(index--) while (index >= 0) { accumulator = operation(index, get(index), accumulator) --index } return accumulator } /** * Accumulates value starting with the last element and applying [operation] from right to left * to each element with its index in the original array and current accumulator value. * * Returns `null` if the array is empty. * * @param [operation] function that takes the index of an element, the element itself and current accumulator value, * and calculates the next accumulator value. * * @sample samples.collections.Collections.Aggregates.reduceRightOrNull */ @SinceKotlin("1.4") public inline fun Array.reduceRightIndexedOrNull(operation: (index: Int, T, acc: S) -> S): S? { var index = lastIndex if (index < 0) return null var accumulator: S = get(index--) while (index >= 0) { accumulator = operation(index, get(index), accumulator) --index } return accumulator } /** * Accumulates value starting with the last element and applying [operation] from right to left * to each element with its index in the original array and current accumulator value. * * Returns `null` if the array is empty. * * @param [operation] function that takes the index of an element, the element itself and current accumulator value, * and calculates the next accumulator value. * * @sample samples.collections.Collections.Aggregates.reduceRightOrNull */ @SinceKotlin("1.4") public inline fun ByteArray.reduceRightIndexedOrNull(operation: (index: Int, Byte, acc: Byte) -> Byte): Byte? { var index = lastIndex if (index < 0) return null var accumulator = get(index--) while (index >= 0) { accumulator = operation(index, get(index), accumulator) --index } return accumulator } /** * Accumulates value starting with the last element and applying [operation] from right to left * to each element with its index in the original array and current accumulator value. * * Returns `null` if the array is empty. * * @param [operation] function that takes the index of an element, the element itself and current accumulator value, * and calculates the next accumulator value. * * @sample samples.collections.Collections.Aggregates.reduceRightOrNull */ @SinceKotlin("1.4") public inline fun ShortArray.reduceRightIndexedOrNull(operation: (index: Int, Short, acc: Short) -> Short): Short? { var index = lastIndex if (index < 0) return null var accumulator = get(index--) while (index >= 0) { accumulator = operation(index, get(index), accumulator) --index } return accumulator } /** * Accumulates value starting with the last element and applying [operation] from right to left * to each element with its index in the original array and current accumulator value. * * Returns `null` if the array is empty. * * @param [operation] function that takes the index of an element, the element itself and current accumulator value, * and calculates the next accumulator value. * * @sample samples.collections.Collections.Aggregates.reduceRightOrNull */ @SinceKotlin("1.4") public inline fun IntArray.reduceRightIndexedOrNull(operation: (index: Int, Int, acc: Int) -> Int): Int? { var index = lastIndex if (index < 0) return null var accumulator = get(index--) while (index >= 0) { accumulator = operation(index, get(index), accumulator) --index } return accumulator } /** * Accumulates value starting with the last element and applying [operation] from right to left * to each element with its index in the original array and current accumulator value. * * Returns `null` if the array is empty. * * @param [operation] function that takes the index of an element, the element itself and current accumulator value, * and calculates the next accumulator value. * * @sample samples.collections.Collections.Aggregates.reduceRightOrNull */ @SinceKotlin("1.4") public inline fun LongArray.reduceRightIndexedOrNull(operation: (index: Int, Long, acc: Long) -> Long): Long? { var index = lastIndex if (index < 0) return null var accumulator = get(index--) while (index >= 0) { accumulator = operation(index, get(index), accumulator) --index } return accumulator } /** * Accumulates value starting with the last element and applying [operation] from right to left * to each element with its index in the original array and current accumulator value. * * Returns `null` if the array is empty. * * @param [operation] function that takes the index of an element, the element itself and current accumulator value, * and calculates the next accumulator value. * * @sample samples.collections.Collections.Aggregates.reduceRightOrNull */ @SinceKotlin("1.4") public inline fun FloatArray.reduceRightIndexedOrNull(operation: (index: Int, Float, acc: Float) -> Float): Float? { var index = lastIndex if (index < 0) return null var accumulator = get(index--) while (index >= 0) { accumulator = operation(index, get(index), accumulator) --index } return accumulator } /** * Accumulates value starting with the last element and applying [operation] from right to left * to each element with its index in the original array and current accumulator value. * * Returns `null` if the array is empty. * * @param [operation] function that takes the index of an element, the element itself and current accumulator value, * and calculates the next accumulator value. * * @sample samples.collections.Collections.Aggregates.reduceRightOrNull */ @SinceKotlin("1.4") public inline fun DoubleArray.reduceRightIndexedOrNull(operation: (index: Int, Double, acc: Double) -> Double): Double? { var index = lastIndex if (index < 0) return null var accumulator = get(index--) while (index >= 0) { accumulator = operation(index, get(index), accumulator) --index } return accumulator } /** * Accumulates value starting with the last element and applying [operation] from right to left * to each element with its index in the original array and current accumulator value. * * Returns `null` if the array is empty. * * @param [operation] function that takes the index of an element, the element itself and current accumulator value, * and calculates the next accumulator value. * * @sample samples.collections.Collections.Aggregates.reduceRightOrNull */ @SinceKotlin("1.4") public inline fun BooleanArray.reduceRightIndexedOrNull(operation: (index: Int, Boolean, acc: Boolean) -> Boolean): Boolean? { var index = lastIndex if (index < 0) return null var accumulator = get(index--) while (index >= 0) { accumulator = operation(index, get(index), accumulator) --index } return accumulator } /** * Accumulates value starting with the last element and applying [operation] from right to left * to each element with its index in the original array and current accumulator value. * * Returns `null` if the array is empty. * * @param [operation] function that takes the index of an element, the element itself and current accumulator value, * and calculates the next accumulator value. * * @sample samples.collections.Collections.Aggregates.reduceRightOrNull */ @SinceKotlin("1.4") public inline fun CharArray.reduceRightIndexedOrNull(operation: (index: Int, Char, acc: Char) -> Char): Char? { var index = lastIndex if (index < 0) return null var accumulator = get(index--) while (index >= 0) { accumulator = operation(index, get(index), accumulator) --index } return accumulator } /** * Accumulates value starting with the last element and applying [operation] from right to left * to each element and current accumulator value. * * Returns `null` if the array is empty. * * @param [operation] function that takes an element and current accumulator value, * and calculates the next accumulator value. * * @sample samples.collections.Collections.Aggregates.reduceRightOrNull */ @SinceKotlin("1.4") public inline fun Array.reduceRightOrNull(operation: (T, acc: S) -> S): S? { var index = lastIndex if (index < 0) return null var accumulator: S = get(index--) while (index >= 0) { accumulator = operation(get(index--), accumulator) } return accumulator } /** * Accumulates value starting with the last element and applying [operation] from right to left * to each element and current accumulator value. * * Returns `null` if the array is empty. * * @param [operation] function that takes an element and current accumulator value, * and calculates the next accumulator value. * * @sample samples.collections.Collections.Aggregates.reduceRightOrNull */ @SinceKotlin("1.4") public inline fun ByteArray.reduceRightOrNull(operation: (Byte, acc: Byte) -> Byte): Byte? { var index = lastIndex if (index < 0) return null var accumulator = get(index--) while (index >= 0) { accumulator = operation(get(index--), accumulator) } return accumulator } /** * Accumulates value starting with the last element and applying [operation] from right to left * to each element and current accumulator value. * * Returns `null` if the array is empty. * * @param [operation] function that takes an element and current accumulator value, * and calculates the next accumulator value. * * @sample samples.collections.Collections.Aggregates.reduceRightOrNull */ @SinceKotlin("1.4") public inline fun ShortArray.reduceRightOrNull(operation: (Short, acc: Short) -> Short): Short? { var index = lastIndex if (index < 0) return null var accumulator = get(index--) while (index >= 0) { accumulator = operation(get(index--), accumulator) } return accumulator } /** * Accumulates value starting with the last element and applying [operation] from right to left * to each element and current accumulator value. * * Returns `null` if the array is empty. * * @param [operation] function that takes an element and current accumulator value, * and calculates the next accumulator value. * * @sample samples.collections.Collections.Aggregates.reduceRightOrNull */ @SinceKotlin("1.4") public inline fun IntArray.reduceRightOrNull(operation: (Int, acc: Int) -> Int): Int? { var index = lastIndex if (index < 0) return null var accumulator = get(index--) while (index >= 0) { accumulator = operation(get(index--), accumulator) } return accumulator } /** * Accumulates value starting with the last element and applying [operation] from right to left * to each element and current accumulator value. * * Returns `null` if the array is empty. * * @param [operation] function that takes an element and current accumulator value, * and calculates the next accumulator value. * * @sample samples.collections.Collections.Aggregates.reduceRightOrNull */ @SinceKotlin("1.4") public inline fun LongArray.reduceRightOrNull(operation: (Long, acc: Long) -> Long): Long? { var index = lastIndex if (index < 0) return null var accumulator = get(index--) while (index >= 0) { accumulator = operation(get(index--), accumulator) } return accumulator } /** * Accumulates value starting with the last element and applying [operation] from right to left * to each element and current accumulator value. * * Returns `null` if the array is empty. * * @param [operation] function that takes an element and current accumulator value, * and calculates the next accumulator value. * * @sample samples.collections.Collections.Aggregates.reduceRightOrNull */ @SinceKotlin("1.4") public inline fun FloatArray.reduceRightOrNull(operation: (Float, acc: Float) -> Float): Float? { var index = lastIndex if (index < 0) return null var accumulator = get(index--) while (index >= 0) { accumulator = operation(get(index--), accumulator) } return accumulator } /** * Accumulates value starting with the last element and applying [operation] from right to left * to each element and current accumulator value. * * Returns `null` if the array is empty. * * @param [operation] function that takes an element and current accumulator value, * and calculates the next accumulator value. * * @sample samples.collections.Collections.Aggregates.reduceRightOrNull */ @SinceKotlin("1.4") public inline fun DoubleArray.reduceRightOrNull(operation: (Double, acc: Double) -> Double): Double? { var index = lastIndex if (index < 0) return null var accumulator = get(index--) while (index >= 0) { accumulator = operation(get(index--), accumulator) } return accumulator } /** * Accumulates value starting with the last element and applying [operation] from right to left * to each element and current accumulator value. * * Returns `null` if the array is empty. * * @param [operation] function that takes an element and current accumulator value, * and calculates the next accumulator value. * * @sample samples.collections.Collections.Aggregates.reduceRightOrNull */ @SinceKotlin("1.4") public inline fun BooleanArray.reduceRightOrNull(operation: (Boolean, acc: Boolean) -> Boolean): Boolean? { var index = lastIndex if (index < 0) return null var accumulator = get(index--) while (index >= 0) { accumulator = operation(get(index--), accumulator) } return accumulator } /** * Accumulates value starting with the last element and applying [operation] from right to left * to each element and current accumulator value. * * Returns `null` if the array is empty. * * @param [operation] function that takes an element and current accumulator value, * and calculates the next accumulator value. * * @sample samples.collections.Collections.Aggregates.reduceRightOrNull */ @SinceKotlin("1.4") public inline fun CharArray.reduceRightOrNull(operation: (Char, acc: Char) -> Char): Char? { var index = lastIndex if (index < 0) return null var accumulator = get(index--) while (index >= 0) { accumulator = operation(get(index--), accumulator) } return accumulator } /** * Returns a list containing successive accumulation values generated by applying [operation] from left to right * to each element and current accumulator value that starts with [initial] value. * * Note that `acc` value passed to [operation] function should not be mutated; * otherwise it would affect the previous value in resulting list. * * @param [operation] function that takes current accumulator value and an element, and calculates the next accumulator value. * * @sample samples.collections.Collections.Aggregates.runningFold */ @SinceKotlin("1.4") public inline fun Array.runningFold(initial: R, operation: (acc: R, T) -> R): List { if (isEmpty()) return listOf(initial) val result = ArrayList(size + 1).apply { add(initial) } var accumulator = initial for (element in this) { accumulator = operation(accumulator, element) result.add(accumulator) } return result } /** * Returns a list containing successive accumulation values generated by applying [operation] from left to right * to each element and current accumulator value that starts with [initial] value. * * Note that `acc` value passed to [operation] function should not be mutated; * otherwise it would affect the previous value in resulting list. * * @param [operation] function that takes current accumulator value and an element, and calculates the next accumulator value. * * @sample samples.collections.Collections.Aggregates.runningFold */ @SinceKotlin("1.4") @kotlin.internal.InlineOnly public inline fun ByteArray.runningFold(initial: R, operation: (acc: R, Byte) -> R): List { if (isEmpty()) return listOf(initial) val result = ArrayList(size + 1).apply { add(initial) } var accumulator = initial for (element in this) { accumulator = operation(accumulator, element) result.add(accumulator) } return result } /** * Returns a list containing successive accumulation values generated by applying [operation] from left to right * to each element and current accumulator value that starts with [initial] value. * * Note that `acc` value passed to [operation] function should not be mutated; * otherwise it would affect the previous value in resulting list. * * @param [operation] function that takes current accumulator value and an element, and calculates the next accumulator value. * * @sample samples.collections.Collections.Aggregates.runningFold */ @SinceKotlin("1.4") @kotlin.internal.InlineOnly public inline fun ShortArray.runningFold(initial: R, operation: (acc: R, Short) -> R): List { if (isEmpty()) return listOf(initial) val result = ArrayList(size + 1).apply { add(initial) } var accumulator = initial for (element in this) { accumulator = operation(accumulator, element) result.add(accumulator) } return result } /** * Returns a list containing successive accumulation values generated by applying [operation] from left to right * to each element and current accumulator value that starts with [initial] value. * * Note that `acc` value passed to [operation] function should not be mutated; * otherwise it would affect the previous value in resulting list. * * @param [operation] function that takes current accumulator value and an element, and calculates the next accumulator value. * * @sample samples.collections.Collections.Aggregates.runningFold */ @SinceKotlin("1.4") @kotlin.internal.InlineOnly public inline fun IntArray.runningFold(initial: R, operation: (acc: R, Int) -> R): List { if (isEmpty()) return listOf(initial) val result = ArrayList(size + 1).apply { add(initial) } var accumulator = initial for (element in this) { accumulator = operation(accumulator, element) result.add(accumulator) } return result } /** * Returns a list containing successive accumulation values generated by applying [operation] from left to right * to each element and current accumulator value that starts with [initial] value. * * Note that `acc` value passed to [operation] function should not be mutated; * otherwise it would affect the previous value in resulting list. * * @param [operation] function that takes current accumulator value and an element, and calculates the next accumulator value. * * @sample samples.collections.Collections.Aggregates.runningFold */ @SinceKotlin("1.4") @kotlin.internal.InlineOnly public inline fun LongArray.runningFold(initial: R, operation: (acc: R, Long) -> R): List { if (isEmpty()) return listOf(initial) val result = ArrayList(size + 1).apply { add(initial) } var accumulator = initial for (element in this) { accumulator = operation(accumulator, element) result.add(accumulator) } return result } /** * Returns a list containing successive accumulation values generated by applying [operation] from left to right * to each element and current accumulator value that starts with [initial] value. * * Note that `acc` value passed to [operation] function should not be mutated; * otherwise it would affect the previous value in resulting list. * * @param [operation] function that takes current accumulator value and an element, and calculates the next accumulator value. * * @sample samples.collections.Collections.Aggregates.runningFold */ @SinceKotlin("1.4") @kotlin.internal.InlineOnly public inline fun FloatArray.runningFold(initial: R, operation: (acc: R, Float) -> R): List { if (isEmpty()) return listOf(initial) val result = ArrayList(size + 1).apply { add(initial) } var accumulator = initial for (element in this) { accumulator = operation(accumulator, element) result.add(accumulator) } return result } /** * Returns a list containing successive accumulation values generated by applying [operation] from left to right * to each element and current accumulator value that starts with [initial] value. * * Note that `acc` value passed to [operation] function should not be mutated; * otherwise it would affect the previous value in resulting list. * * @param [operation] function that takes current accumulator value and an element, and calculates the next accumulator value. * * @sample samples.collections.Collections.Aggregates.runningFold */ @SinceKotlin("1.4") @kotlin.internal.InlineOnly public inline fun DoubleArray.runningFold(initial: R, operation: (acc: R, Double) -> R): List { if (isEmpty()) return listOf(initial) val result = ArrayList(size + 1).apply { add(initial) } var accumulator = initial for (element in this) { accumulator = operation(accumulator, element) result.add(accumulator) } return result } /** * Returns a list containing successive accumulation values generated by applying [operation] from left to right * to each element and current accumulator value that starts with [initial] value. * * Note that `acc` value passed to [operation] function should not be mutated; * otherwise it would affect the previous value in resulting list. * * @param [operation] function that takes current accumulator value and an element, and calculates the next accumulator value. * * @sample samples.collections.Collections.Aggregates.runningFold */ @SinceKotlin("1.4") @kotlin.internal.InlineOnly public inline fun BooleanArray.runningFold(initial: R, operation: (acc: R, Boolean) -> R): List { if (isEmpty()) return listOf(initial) val result = ArrayList(size + 1).apply { add(initial) } var accumulator = initial for (element in this) { accumulator = operation(accumulator, element) result.add(accumulator) } return result } /** * Returns a list containing successive accumulation values generated by applying [operation] from left to right * to each element and current accumulator value that starts with [initial] value. * * Note that `acc` value passed to [operation] function should not be mutated; * otherwise it would affect the previous value in resulting list. * * @param [operation] function that takes current accumulator value and an element, and calculates the next accumulator value. * * @sample samples.collections.Collections.Aggregates.runningFold */ @SinceKotlin("1.4") @kotlin.internal.InlineOnly public inline fun CharArray.runningFold(initial: R, operation: (acc: R, Char) -> R): List { if (isEmpty()) return listOf(initial) val result = ArrayList(size + 1).apply { add(initial) } var accumulator = initial for (element in this) { accumulator = operation(accumulator, element) result.add(accumulator) } return result } /** * Returns a list containing successive accumulation values generated by applying [operation] from left to right * to each element, its index in the original array and current accumulator value that starts with [initial] value. * * Note that `acc` value passed to [operation] function should not be mutated; * otherwise it would affect the previous value in resulting list. * * @param [operation] function that takes the index of an element, current accumulator value * and the element itself, and calculates the next accumulator value. * * @sample samples.collections.Collections.Aggregates.runningFold */ @SinceKotlin("1.4") public inline fun Array.runningFoldIndexed(initial: R, operation: (index: Int, acc: R, T) -> R): List { if (isEmpty()) return listOf(initial) val result = ArrayList(size + 1).apply { add(initial) } var accumulator = initial for (index in indices) { accumulator = operation(index, accumulator, this[index]) result.add(accumulator) } return result } /** * Returns a list containing successive accumulation values generated by applying [operation] from left to right * to each element, its index in the original array and current accumulator value that starts with [initial] value. * * Note that `acc` value passed to [operation] function should not be mutated; * otherwise it would affect the previous value in resulting list. * * @param [operation] function that takes the index of an element, current accumulator value * and the element itself, and calculates the next accumulator value. * * @sample samples.collections.Collections.Aggregates.runningFold */ @SinceKotlin("1.4") @kotlin.internal.InlineOnly public inline fun ByteArray.runningFoldIndexed(initial: R, operation: (index: Int, acc: R, Byte) -> R): List { if (isEmpty()) return listOf(initial) val result = ArrayList(size + 1).apply { add(initial) } var accumulator = initial for (index in indices) { accumulator = operation(index, accumulator, this[index]) result.add(accumulator) } return result } /** * Returns a list containing successive accumulation values generated by applying [operation] from left to right * to each element, its index in the original array and current accumulator value that starts with [initial] value. * * Note that `acc` value passed to [operation] function should not be mutated; * otherwise it would affect the previous value in resulting list. * * @param [operation] function that takes the index of an element, current accumulator value * and the element itself, and calculates the next accumulator value. * * @sample samples.collections.Collections.Aggregates.runningFold */ @SinceKotlin("1.4") @kotlin.internal.InlineOnly public inline fun ShortArray.runningFoldIndexed(initial: R, operation: (index: Int, acc: R, Short) -> R): List { if (isEmpty()) return listOf(initial) val result = ArrayList(size + 1).apply { add(initial) } var accumulator = initial for (index in indices) { accumulator = operation(index, accumulator, this[index]) result.add(accumulator) } return result } /** * Returns a list containing successive accumulation values generated by applying [operation] from left to right * to each element, its index in the original array and current accumulator value that starts with [initial] value. * * Note that `acc` value passed to [operation] function should not be mutated; * otherwise it would affect the previous value in resulting list. * * @param [operation] function that takes the index of an element, current accumulator value * and the element itself, and calculates the next accumulator value. * * @sample samples.collections.Collections.Aggregates.runningFold */ @SinceKotlin("1.4") @kotlin.internal.InlineOnly public inline fun IntArray.runningFoldIndexed(initial: R, operation: (index: Int, acc: R, Int) -> R): List { if (isEmpty()) return listOf(initial) val result = ArrayList(size + 1).apply { add(initial) } var accumulator = initial for (index in indices) { accumulator = operation(index, accumulator, this[index]) result.add(accumulator) } return result } /** * Returns a list containing successive accumulation values generated by applying [operation] from left to right * to each element, its index in the original array and current accumulator value that starts with [initial] value. * * Note that `acc` value passed to [operation] function should not be mutated; * otherwise it would affect the previous value in resulting list. * * @param [operation] function that takes the index of an element, current accumulator value * and the element itself, and calculates the next accumulator value. * * @sample samples.collections.Collections.Aggregates.runningFold */ @SinceKotlin("1.4") @kotlin.internal.InlineOnly public inline fun LongArray.runningFoldIndexed(initial: R, operation: (index: Int, acc: R, Long) -> R): List { if (isEmpty()) return listOf(initial) val result = ArrayList(size + 1).apply { add(initial) } var accumulator = initial for (index in indices) { accumulator = operation(index, accumulator, this[index]) result.add(accumulator) } return result } /** * Returns a list containing successive accumulation values generated by applying [operation] from left to right * to each element, its index in the original array and current accumulator value that starts with [initial] value. * * Note that `acc` value passed to [operation] function should not be mutated; * otherwise it would affect the previous value in resulting list. * * @param [operation] function that takes the index of an element, current accumulator value * and the element itself, and calculates the next accumulator value. * * @sample samples.collections.Collections.Aggregates.runningFold */ @SinceKotlin("1.4") @kotlin.internal.InlineOnly public inline fun FloatArray.runningFoldIndexed(initial: R, operation: (index: Int, acc: R, Float) -> R): List { if (isEmpty()) return listOf(initial) val result = ArrayList(size + 1).apply { add(initial) } var accumulator = initial for (index in indices) { accumulator = operation(index, accumulator, this[index]) result.add(accumulator) } return result } /** * Returns a list containing successive accumulation values generated by applying [operation] from left to right * to each element, its index in the original array and current accumulator value that starts with [initial] value. * * Note that `acc` value passed to [operation] function should not be mutated; * otherwise it would affect the previous value in resulting list. * * @param [operation] function that takes the index of an element, current accumulator value * and the element itself, and calculates the next accumulator value. * * @sample samples.collections.Collections.Aggregates.runningFold */ @SinceKotlin("1.4") @kotlin.internal.InlineOnly public inline fun DoubleArray.runningFoldIndexed(initial: R, operation: (index: Int, acc: R, Double) -> R): List { if (isEmpty()) return listOf(initial) val result = ArrayList(size + 1).apply { add(initial) } var accumulator = initial for (index in indices) { accumulator = operation(index, accumulator, this[index]) result.add(accumulator) } return result } /** * Returns a list containing successive accumulation values generated by applying [operation] from left to right * to each element, its index in the original array and current accumulator value that starts with [initial] value. * * Note that `acc` value passed to [operation] function should not be mutated; * otherwise it would affect the previous value in resulting list. * * @param [operation] function that takes the index of an element, current accumulator value * and the element itself, and calculates the next accumulator value. * * @sample samples.collections.Collections.Aggregates.runningFold */ @SinceKotlin("1.4") @kotlin.internal.InlineOnly public inline fun BooleanArray.runningFoldIndexed(initial: R, operation: (index: Int, acc: R, Boolean) -> R): List { if (isEmpty()) return listOf(initial) val result = ArrayList(size + 1).apply { add(initial) } var accumulator = initial for (index in indices) { accumulator = operation(index, accumulator, this[index]) result.add(accumulator) } return result } /** * Returns a list containing successive accumulation values generated by applying [operation] from left to right * to each element, its index in the original array and current accumulator value that starts with [initial] value. * * Note that `acc` value passed to [operation] function should not be mutated; * otherwise it would affect the previous value in resulting list. * * @param [operation] function that takes the index of an element, current accumulator value * and the element itself, and calculates the next accumulator value. * * @sample samples.collections.Collections.Aggregates.runningFold */ @SinceKotlin("1.4") @kotlin.internal.InlineOnly public inline fun CharArray.runningFoldIndexed(initial: R, operation: (index: Int, acc: R, Char) -> R): List { if (isEmpty()) return listOf(initial) val result = ArrayList(size + 1).apply { add(initial) } var accumulator = initial for (index in indices) { accumulator = operation(index, accumulator, this[index]) result.add(accumulator) } return result } /** * Returns a list containing successive accumulation values generated by applying [operation] from left to right * to each element and current accumulator value that starts with the first element of this array. * * Note that `acc` value passed to [operation] function should not be mutated; * otherwise it would affect the previous value in resulting list. * * @param [operation] function that takes current accumulator value and the element, and calculates the next accumulator value. * * @sample samples.collections.Collections.Aggregates.runningReduce */ @SinceKotlin("1.4") public inline fun Array.runningReduce(operation: (acc: S, T) -> S): List { if (isEmpty()) return emptyList() var accumulator: S = this[0] val result = ArrayList(size).apply { add(accumulator) } for (index in 1 until size) { accumulator = operation(accumulator, this[index]) result.add(accumulator) } return result } /** * Returns a list containing successive accumulation values generated by applying [operation] from left to right * to each element and current accumulator value that starts with the first element of this array. * * @param [operation] function that takes current accumulator value and an element, and calculates the next accumulator value. * * @sample samples.collections.Collections.Aggregates.runningReduce */ @SinceKotlin("1.4") @kotlin.internal.InlineOnly public inline fun ByteArray.runningReduce(operation: (acc: Byte, Byte) -> Byte): List { if (isEmpty()) return emptyList() var accumulator = this[0] val result = ArrayList(size).apply { add(accumulator) } for (index in 1 until size) { accumulator = operation(accumulator, this[index]) result.add(accumulator) } return result } /** * Returns a list containing successive accumulation values generated by applying [operation] from left to right * to each element and current accumulator value that starts with the first element of this array. * * @param [operation] function that takes current accumulator value and an element, and calculates the next accumulator value. * * @sample samples.collections.Collections.Aggregates.runningReduce */ @SinceKotlin("1.4") @kotlin.internal.InlineOnly public inline fun ShortArray.runningReduce(operation: (acc: Short, Short) -> Short): List { if (isEmpty()) return emptyList() var accumulator = this[0] val result = ArrayList(size).apply { add(accumulator) } for (index in 1 until size) { accumulator = operation(accumulator, this[index]) result.add(accumulator) } return result } /** * Returns a list containing successive accumulation values generated by applying [operation] from left to right * to each element and current accumulator value that starts with the first element of this array. * * @param [operation] function that takes current accumulator value and an element, and calculates the next accumulator value. * * @sample samples.collections.Collections.Aggregates.runningReduce */ @SinceKotlin("1.4") @kotlin.internal.InlineOnly public inline fun IntArray.runningReduce(operation: (acc: Int, Int) -> Int): List { if (isEmpty()) return emptyList() var accumulator = this[0] val result = ArrayList(size).apply { add(accumulator) } for (index in 1 until size) { accumulator = operation(accumulator, this[index]) result.add(accumulator) } return result } /** * Returns a list containing successive accumulation values generated by applying [operation] from left to right * to each element and current accumulator value that starts with the first element of this array. * * @param [operation] function that takes current accumulator value and an element, and calculates the next accumulator value. * * @sample samples.collections.Collections.Aggregates.runningReduce */ @SinceKotlin("1.4") @kotlin.internal.InlineOnly public inline fun LongArray.runningReduce(operation: (acc: Long, Long) -> Long): List { if (isEmpty()) return emptyList() var accumulator = this[0] val result = ArrayList(size).apply { add(accumulator) } for (index in 1 until size) { accumulator = operation(accumulator, this[index]) result.add(accumulator) } return result } /** * Returns a list containing successive accumulation values generated by applying [operation] from left to right * to each element and current accumulator value that starts with the first element of this array. * * @param [operation] function that takes current accumulator value and an element, and calculates the next accumulator value. * * @sample samples.collections.Collections.Aggregates.runningReduce */ @SinceKotlin("1.4") @kotlin.internal.InlineOnly public inline fun FloatArray.runningReduce(operation: (acc: Float, Float) -> Float): List { if (isEmpty()) return emptyList() var accumulator = this[0] val result = ArrayList(size).apply { add(accumulator) } for (index in 1 until size) { accumulator = operation(accumulator, this[index]) result.add(accumulator) } return result } /** * Returns a list containing successive accumulation values generated by applying [operation] from left to right * to each element and current accumulator value that starts with the first element of this array. * * @param [operation] function that takes current accumulator value and an element, and calculates the next accumulator value. * * @sample samples.collections.Collections.Aggregates.runningReduce */ @SinceKotlin("1.4") @kotlin.internal.InlineOnly public inline fun DoubleArray.runningReduce(operation: (acc: Double, Double) -> Double): List { if (isEmpty()) return emptyList() var accumulator = this[0] val result = ArrayList(size).apply { add(accumulator) } for (index in 1 until size) { accumulator = operation(accumulator, this[index]) result.add(accumulator) } return result } /** * Returns a list containing successive accumulation values generated by applying [operation] from left to right * to each element and current accumulator value that starts with the first element of this array. * * @param [operation] function that takes current accumulator value and an element, and calculates the next accumulator value. * * @sample samples.collections.Collections.Aggregates.runningReduce */ @SinceKotlin("1.4") @kotlin.internal.InlineOnly public inline fun BooleanArray.runningReduce(operation: (acc: Boolean, Boolean) -> Boolean): List { if (isEmpty()) return emptyList() var accumulator = this[0] val result = ArrayList(size).apply { add(accumulator) } for (index in 1 until size) { accumulator = operation(accumulator, this[index]) result.add(accumulator) } return result } /** * Returns a list containing successive accumulation values generated by applying [operation] from left to right * to each element and current accumulator value that starts with the first element of this array. * * @param [operation] function that takes current accumulator value and an element, and calculates the next accumulator value. * * @sample samples.collections.Collections.Aggregates.runningReduce */ @SinceKotlin("1.4") @kotlin.internal.InlineOnly public inline fun CharArray.runningReduce(operation: (acc: Char, Char) -> Char): List { if (isEmpty()) return emptyList() var accumulator = this[0] val result = ArrayList(size).apply { add(accumulator) } for (index in 1 until size) { accumulator = operation(accumulator, this[index]) result.add(accumulator) } return result } /** * Returns a list containing successive accumulation values generated by applying [operation] from left to right * to each element, its index in the original array and current accumulator value that starts with the first element of this array. * * Note that `acc` value passed to [operation] function should not be mutated; * otherwise it would affect the previous value in resulting list. * * @param [operation] function that takes the index of an element, current accumulator value * and the element itself, and calculates the next accumulator value. * * @sample samples.collections.Collections.Aggregates.runningReduce */ @SinceKotlin("1.4") public inline fun Array.runningReduceIndexed(operation: (index: Int, acc: S, T) -> S): List { if (isEmpty()) return emptyList() var accumulator: S = this[0] val result = ArrayList(size).apply { add(accumulator) } for (index in 1 until size) { accumulator = operation(index, accumulator, this[index]) result.add(accumulator) } return result } /** * Returns a list containing successive accumulation values generated by applying [operation] from left to right * to each element, its index in the original array and current accumulator value that starts with the first element of this array. * * @param [operation] function that takes the index of an element, current accumulator value * and the element itself, and calculates the next accumulator value. * * @sample samples.collections.Collections.Aggregates.runningReduce */ @SinceKotlin("1.4") @kotlin.internal.InlineOnly public inline fun ByteArray.runningReduceIndexed(operation: (index: Int, acc: Byte, Byte) -> Byte): List { if (isEmpty()) return emptyList() var accumulator = this[0] val result = ArrayList(size).apply { add(accumulator) } for (index in 1 until size) { accumulator = operation(index, accumulator, this[index]) result.add(accumulator) } return result } /** * Returns a list containing successive accumulation values generated by applying [operation] from left to right * to each element, its index in the original array and current accumulator value that starts with the first element of this array. * * @param [operation] function that takes the index of an element, current accumulator value * and the element itself, and calculates the next accumulator value. * * @sample samples.collections.Collections.Aggregates.runningReduce */ @SinceKotlin("1.4") @kotlin.internal.InlineOnly public inline fun ShortArray.runningReduceIndexed(operation: (index: Int, acc: Short, Short) -> Short): List { if (isEmpty()) return emptyList() var accumulator = this[0] val result = ArrayList(size).apply { add(accumulator) } for (index in 1 until size) { accumulator = operation(index, accumulator, this[index]) result.add(accumulator) } return result } /** * Returns a list containing successive accumulation values generated by applying [operation] from left to right * to each element, its index in the original array and current accumulator value that starts with the first element of this array. * * @param [operation] function that takes the index of an element, current accumulator value * and the element itself, and calculates the next accumulator value. * * @sample samples.collections.Collections.Aggregates.runningReduce */ @SinceKotlin("1.4") @kotlin.internal.InlineOnly public inline fun IntArray.runningReduceIndexed(operation: (index: Int, acc: Int, Int) -> Int): List { if (isEmpty()) return emptyList() var accumulator = this[0] val result = ArrayList(size).apply { add(accumulator) } for (index in 1 until size) { accumulator = operation(index, accumulator, this[index]) result.add(accumulator) } return result } /** * Returns a list containing successive accumulation values generated by applying [operation] from left to right * to each element, its index in the original array and current accumulator value that starts with the first element of this array. * * @param [operation] function that takes the index of an element, current accumulator value * and the element itself, and calculates the next accumulator value. * * @sample samples.collections.Collections.Aggregates.runningReduce */ @SinceKotlin("1.4") @kotlin.internal.InlineOnly public inline fun LongArray.runningReduceIndexed(operation: (index: Int, acc: Long, Long) -> Long): List { if (isEmpty()) return emptyList() var accumulator = this[0] val result = ArrayList(size).apply { add(accumulator) } for (index in 1 until size) { accumulator = operation(index, accumulator, this[index]) result.add(accumulator) } return result } /** * Returns a list containing successive accumulation values generated by applying [operation] from left to right * to each element, its index in the original array and current accumulator value that starts with the first element of this array. * * @param [operation] function that takes the index of an element, current accumulator value * and the element itself, and calculates the next accumulator value. * * @sample samples.collections.Collections.Aggregates.runningReduce */ @SinceKotlin("1.4") @kotlin.internal.InlineOnly public inline fun FloatArray.runningReduceIndexed(operation: (index: Int, acc: Float, Float) -> Float): List { if (isEmpty()) return emptyList() var accumulator = this[0] val result = ArrayList(size).apply { add(accumulator) } for (index in 1 until size) { accumulator = operation(index, accumulator, this[index]) result.add(accumulator) } return result } /** * Returns a list containing successive accumulation values generated by applying [operation] from left to right * to each element, its index in the original array and current accumulator value that starts with the first element of this array. * * @param [operation] function that takes the index of an element, current accumulator value * and the element itself, and calculates the next accumulator value. * * @sample samples.collections.Collections.Aggregates.runningReduce */ @SinceKotlin("1.4") @kotlin.internal.InlineOnly public inline fun DoubleArray.runningReduceIndexed(operation: (index: Int, acc: Double, Double) -> Double): List { if (isEmpty()) return emptyList() var accumulator = this[0] val result = ArrayList(size).apply { add(accumulator) } for (index in 1 until size) { accumulator = operation(index, accumulator, this[index]) result.add(accumulator) } return result } /** * Returns a list containing successive accumulation values generated by applying [operation] from left to right * to each element, its index in the original array and current accumulator value that starts with the first element of this array. * * @param [operation] function that takes the index of an element, current accumulator value * and the element itself, and calculates the next accumulator value. * * @sample samples.collections.Collections.Aggregates.runningReduce */ @SinceKotlin("1.4") @kotlin.internal.InlineOnly public inline fun BooleanArray.runningReduceIndexed(operation: (index: Int, acc: Boolean, Boolean) -> Boolean): List { if (isEmpty()) return emptyList() var accumulator = this[0] val result = ArrayList(size).apply { add(accumulator) } for (index in 1 until size) { accumulator = operation(index, accumulator, this[index]) result.add(accumulator) } return result } /** * Returns a list containing successive accumulation values generated by applying [operation] from left to right * to each element, its index in the original array and current accumulator value that starts with the first element of this array. * * @param [operation] function that takes the index of an element, current accumulator value * and the element itself, and calculates the next accumulator value. * * @sample samples.collections.Collections.Aggregates.runningReduce */ @SinceKotlin("1.4") @kotlin.internal.InlineOnly public inline fun CharArray.runningReduceIndexed(operation: (index: Int, acc: Char, Char) -> Char): List { if (isEmpty()) return emptyList() var accumulator = this[0] val result = ArrayList(size).apply { add(accumulator) } for (index in 1 until size) { accumulator = operation(index, accumulator, this[index]) result.add(accumulator) } return result } /** * Returns a list containing successive accumulation values generated by applying [operation] from left to right * to each element and current accumulator value that starts with [initial] value. * * Note that `acc` value passed to [operation] function should not be mutated; * otherwise it would affect the previous value in resulting list. * * @param [operation] function that takes current accumulator value and an element, and calculates the next accumulator value. * * @sample samples.collections.Collections.Aggregates.scan */ @SinceKotlin("1.4") public inline fun Array.scan(initial: R, operation: (acc: R, T) -> R): List { return runningFold(initial, operation) } /** * Returns a list containing successive accumulation values generated by applying [operation] from left to right * to each element and current accumulator value that starts with [initial] value. * * Note that `acc` value passed to [operation] function should not be mutated; * otherwise it would affect the previous value in resulting list. * * @param [operation] function that takes current accumulator value and an element, and calculates the next accumulator value. * * @sample samples.collections.Collections.Aggregates.scan */ @SinceKotlin("1.4") @kotlin.internal.InlineOnly public inline fun ByteArray.scan(initial: R, operation: (acc: R, Byte) -> R): List { return runningFold(initial, operation) } /** * Returns a list containing successive accumulation values generated by applying [operation] from left to right * to each element and current accumulator value that starts with [initial] value. * * Note that `acc` value passed to [operation] function should not be mutated; * otherwise it would affect the previous value in resulting list. * * @param [operation] function that takes current accumulator value and an element, and calculates the next accumulator value. * * @sample samples.collections.Collections.Aggregates.scan */ @SinceKotlin("1.4") @kotlin.internal.InlineOnly public inline fun ShortArray.scan(initial: R, operation: (acc: R, Short) -> R): List { return runningFold(initial, operation) } /** * Returns a list containing successive accumulation values generated by applying [operation] from left to right * to each element and current accumulator value that starts with [initial] value. * * Note that `acc` value passed to [operation] function should not be mutated; * otherwise it would affect the previous value in resulting list. * * @param [operation] function that takes current accumulator value and an element, and calculates the next accumulator value. * * @sample samples.collections.Collections.Aggregates.scan */ @SinceKotlin("1.4") @kotlin.internal.InlineOnly public inline fun IntArray.scan(initial: R, operation: (acc: R, Int) -> R): List { return runningFold(initial, operation) } /** * Returns a list containing successive accumulation values generated by applying [operation] from left to right * to each element and current accumulator value that starts with [initial] value. * * Note that `acc` value passed to [operation] function should not be mutated; * otherwise it would affect the previous value in resulting list. * * @param [operation] function that takes current accumulator value and an element, and calculates the next accumulator value. * * @sample samples.collections.Collections.Aggregates.scan */ @SinceKotlin("1.4") @kotlin.internal.InlineOnly public inline fun LongArray.scan(initial: R, operation: (acc: R, Long) -> R): List { return runningFold(initial, operation) } /** * Returns a list containing successive accumulation values generated by applying [operation] from left to right * to each element and current accumulator value that starts with [initial] value. * * Note that `acc` value passed to [operation] function should not be mutated; * otherwise it would affect the previous value in resulting list. * * @param [operation] function that takes current accumulator value and an element, and calculates the next accumulator value. * * @sample samples.collections.Collections.Aggregates.scan */ @SinceKotlin("1.4") @kotlin.internal.InlineOnly public inline fun FloatArray.scan(initial: R, operation: (acc: R, Float) -> R): List { return runningFold(initial, operation) } /** * Returns a list containing successive accumulation values generated by applying [operation] from left to right * to each element and current accumulator value that starts with [initial] value. * * Note that `acc` value passed to [operation] function should not be mutated; * otherwise it would affect the previous value in resulting list. * * @param [operation] function that takes current accumulator value and an element, and calculates the next accumulator value. * * @sample samples.collections.Collections.Aggregates.scan */ @SinceKotlin("1.4") @kotlin.internal.InlineOnly public inline fun DoubleArray.scan(initial: R, operation: (acc: R, Double) -> R): List { return runningFold(initial, operation) } /** * Returns a list containing successive accumulation values generated by applying [operation] from left to right * to each element and current accumulator value that starts with [initial] value. * * Note that `acc` value passed to [operation] function should not be mutated; * otherwise it would affect the previous value in resulting list. * * @param [operation] function that takes current accumulator value and an element, and calculates the next accumulator value. * * @sample samples.collections.Collections.Aggregates.scan */ @SinceKotlin("1.4") @kotlin.internal.InlineOnly public inline fun BooleanArray.scan(initial: R, operation: (acc: R, Boolean) -> R): List { return runningFold(initial, operation) } /** * Returns a list containing successive accumulation values generated by applying [operation] from left to right * to each element and current accumulator value that starts with [initial] value. * * Note that `acc` value passed to [operation] function should not be mutated; * otherwise it would affect the previous value in resulting list. * * @param [operation] function that takes current accumulator value and an element, and calculates the next accumulator value. * * @sample samples.collections.Collections.Aggregates.scan */ @SinceKotlin("1.4") @kotlin.internal.InlineOnly public inline fun CharArray.scan(initial: R, operation: (acc: R, Char) -> R): List { return runningFold(initial, operation) } /** * Returns a list containing successive accumulation values generated by applying [operation] from left to right * to each element, its index in the original array and current accumulator value that starts with [initial] value. * * Note that `acc` value passed to [operation] function should not be mutated; * otherwise it would affect the previous value in resulting list. * * @param [operation] function that takes the index of an element, current accumulator value * and the element itself, and calculates the next accumulator value. * * @sample samples.collections.Collections.Aggregates.scan */ @SinceKotlin("1.4") public inline fun Array.scanIndexed(initial: R, operation: (index: Int, acc: R, T) -> R): List { return runningFoldIndexed(initial, operation) } /** * Returns a list containing successive accumulation values generated by applying [operation] from left to right * to each element, its index in the original array and current accumulator value that starts with [initial] value. * * Note that `acc` value passed to [operation] function should not be mutated; * otherwise it would affect the previous value in resulting list. * * @param [operation] function that takes the index of an element, current accumulator value * and the element itself, and calculates the next accumulator value. * * @sample samples.collections.Collections.Aggregates.scan */ @SinceKotlin("1.4") @kotlin.internal.InlineOnly public inline fun ByteArray.scanIndexed(initial: R, operation: (index: Int, acc: R, Byte) -> R): List { return runningFoldIndexed(initial, operation) } /** * Returns a list containing successive accumulation values generated by applying [operation] from left to right * to each element, its index in the original array and current accumulator value that starts with [initial] value. * * Note that `acc` value passed to [operation] function should not be mutated; * otherwise it would affect the previous value in resulting list. * * @param [operation] function that takes the index of an element, current accumulator value * and the element itself, and calculates the next accumulator value. * * @sample samples.collections.Collections.Aggregates.scan */ @SinceKotlin("1.4") @kotlin.internal.InlineOnly public inline fun ShortArray.scanIndexed(initial: R, operation: (index: Int, acc: R, Short) -> R): List { return runningFoldIndexed(initial, operation) } /** * Returns a list containing successive accumulation values generated by applying [operation] from left to right * to each element, its index in the original array and current accumulator value that starts with [initial] value. * * Note that `acc` value passed to [operation] function should not be mutated; * otherwise it would affect the previous value in resulting list. * * @param [operation] function that takes the index of an element, current accumulator value * and the element itself, and calculates the next accumulator value. * * @sample samples.collections.Collections.Aggregates.scan */ @SinceKotlin("1.4") @kotlin.internal.InlineOnly public inline fun IntArray.scanIndexed(initial: R, operation: (index: Int, acc: R, Int) -> R): List { return runningFoldIndexed(initial, operation) } /** * Returns a list containing successive accumulation values generated by applying [operation] from left to right * to each element, its index in the original array and current accumulator value that starts with [initial] value. * * Note that `acc` value passed to [operation] function should not be mutated; * otherwise it would affect the previous value in resulting list. * * @param [operation] function that takes the index of an element, current accumulator value * and the element itself, and calculates the next accumulator value. * * @sample samples.collections.Collections.Aggregates.scan */ @SinceKotlin("1.4") @kotlin.internal.InlineOnly public inline fun LongArray.scanIndexed(initial: R, operation: (index: Int, acc: R, Long) -> R): List { return runningFoldIndexed(initial, operation) } /** * Returns a list containing successive accumulation values generated by applying [operation] from left to right * to each element, its index in the original array and current accumulator value that starts with [initial] value. * * Note that `acc` value passed to [operation] function should not be mutated; * otherwise it would affect the previous value in resulting list. * * @param [operation] function that takes the index of an element, current accumulator value * and the element itself, and calculates the next accumulator value. * * @sample samples.collections.Collections.Aggregates.scan */ @SinceKotlin("1.4") @kotlin.internal.InlineOnly public inline fun FloatArray.scanIndexed(initial: R, operation: (index: Int, acc: R, Float) -> R): List { return runningFoldIndexed(initial, operation) } /** * Returns a list containing successive accumulation values generated by applying [operation] from left to right * to each element, its index in the original array and current accumulator value that starts with [initial] value. * * Note that `acc` value passed to [operation] function should not be mutated; * otherwise it would affect the previous value in resulting list. * * @param [operation] function that takes the index of an element, current accumulator value * and the element itself, and calculates the next accumulator value. * * @sample samples.collections.Collections.Aggregates.scan */ @SinceKotlin("1.4") @kotlin.internal.InlineOnly public inline fun DoubleArray.scanIndexed(initial: R, operation: (index: Int, acc: R, Double) -> R): List { return runningFoldIndexed(initial, operation) } /** * Returns a list containing successive accumulation values generated by applying [operation] from left to right * to each element, its index in the original array and current accumulator value that starts with [initial] value. * * Note that `acc` value passed to [operation] function should not be mutated; * otherwise it would affect the previous value in resulting list. * * @param [operation] function that takes the index of an element, current accumulator value * and the element itself, and calculates the next accumulator value. * * @sample samples.collections.Collections.Aggregates.scan */ @SinceKotlin("1.4") @kotlin.internal.InlineOnly public inline fun BooleanArray.scanIndexed(initial: R, operation: (index: Int, acc: R, Boolean) -> R): List { return runningFoldIndexed(initial, operation) } /** * Returns a list containing successive accumulation values generated by applying [operation] from left to right * to each element, its index in the original array and current accumulator value that starts with [initial] value. * * Note that `acc` value passed to [operation] function should not be mutated; * otherwise it would affect the previous value in resulting list. * * @param [operation] function that takes the index of an element, current accumulator value * and the element itself, and calculates the next accumulator value. * * @sample samples.collections.Collections.Aggregates.scan */ @SinceKotlin("1.4") @kotlin.internal.InlineOnly public inline fun CharArray.scanIndexed(initial: R, operation: (index: Int, acc: R, Char) -> R): List { return runningFoldIndexed(initial, operation) } /** * Returns the sum of all values produced by [selector] function applied to each element in the array. */ @Deprecated("Use sumOf instead.", ReplaceWith("this.sumOf(selector)")) @DeprecatedSinceKotlin(warningSince = "1.5") public inline fun Array.sumBy(selector: (T) -> Int): Int { var sum: Int = 0 for (element in this) { sum += selector(element) } return sum } /** * Returns the sum of all values produced by [selector] function applied to each element in the array. */ @Deprecated("Use sumOf instead.", ReplaceWith("this.sumOf(selector)")) @DeprecatedSinceKotlin(warningSince = "1.5") public inline fun ByteArray.sumBy(selector: (Byte) -> Int): Int { var sum: Int = 0 for (element in this) { sum += selector(element) } return sum } /** * Returns the sum of all values produced by [selector] function applied to each element in the array. */ @Deprecated("Use sumOf instead.", ReplaceWith("this.sumOf(selector)")) @DeprecatedSinceKotlin(warningSince = "1.5") public inline fun ShortArray.sumBy(selector: (Short) -> Int): Int { var sum: Int = 0 for (element in this) { sum += selector(element) } return sum } /** * Returns the sum of all values produced by [selector] function applied to each element in the array. */ @Deprecated("Use sumOf instead.", ReplaceWith("this.sumOf(selector)")) @DeprecatedSinceKotlin(warningSince = "1.5") public inline fun IntArray.sumBy(selector: (Int) -> Int): Int { var sum: Int = 0 for (element in this) { sum += selector(element) } return sum } /** * Returns the sum of all values produced by [selector] function applied to each element in the array. */ @Deprecated("Use sumOf instead.", ReplaceWith("this.sumOf(selector)")) @DeprecatedSinceKotlin(warningSince = "1.5") public inline fun LongArray.sumBy(selector: (Long) -> Int): Int { var sum: Int = 0 for (element in this) { sum += selector(element) } return sum } /** * Returns the sum of all values produced by [selector] function applied to each element in the array. */ @Deprecated("Use sumOf instead.", ReplaceWith("this.sumOf(selector)")) @DeprecatedSinceKotlin(warningSince = "1.5") public inline fun FloatArray.sumBy(selector: (Float) -> Int): Int { var sum: Int = 0 for (element in this) { sum += selector(element) } return sum } /** * Returns the sum of all values produced by [selector] function applied to each element in the array. */ @Deprecated("Use sumOf instead.", ReplaceWith("this.sumOf(selector)")) @DeprecatedSinceKotlin(warningSince = "1.5") public inline fun DoubleArray.sumBy(selector: (Double) -> Int): Int { var sum: Int = 0 for (element in this) { sum += selector(element) } return sum } /** * Returns the sum of all values produced by [selector] function applied to each element in the array. */ @Deprecated("Use sumOf instead.", ReplaceWith("this.sumOf(selector)")) @DeprecatedSinceKotlin(warningSince = "1.5") public inline fun BooleanArray.sumBy(selector: (Boolean) -> Int): Int { var sum: Int = 0 for (element in this) { sum += selector(element) } return sum } /** * Returns the sum of all values produced by [selector] function applied to each element in the array. */ @Deprecated("Use sumOf instead.", ReplaceWith("this.sumOf(selector)")) @DeprecatedSinceKotlin(warningSince = "1.5") public inline fun CharArray.sumBy(selector: (Char) -> Int): Int { var sum: Int = 0 for (element in this) { sum += selector(element) } return sum } /** * Returns the sum of all values produced by [selector] function applied to each element in the array. */ @Deprecated("Use sumOf instead.", ReplaceWith("this.sumOf(selector)")) @DeprecatedSinceKotlin(warningSince = "1.5") public inline fun Array.sumByDouble(selector: (T) -> Double): Double { var sum: Double = 0.0 for (element in this) { sum += selector(element) } return sum } /** * Returns the sum of all values produced by [selector] function applied to each element in the array. */ @Deprecated("Use sumOf instead.", ReplaceWith("this.sumOf(selector)")) @DeprecatedSinceKotlin(warningSince = "1.5") public inline fun ByteArray.sumByDouble(selector: (Byte) -> Double): Double { var sum: Double = 0.0 for (element in this) { sum += selector(element) } return sum } /** * Returns the sum of all values produced by [selector] function applied to each element in the array. */ @Deprecated("Use sumOf instead.", ReplaceWith("this.sumOf(selector)")) @DeprecatedSinceKotlin(warningSince = "1.5") public inline fun ShortArray.sumByDouble(selector: (Short) -> Double): Double { var sum: Double = 0.0 for (element in this) { sum += selector(element) } return sum } /** * Returns the sum of all values produced by [selector] function applied to each element in the array. */ @Deprecated("Use sumOf instead.", ReplaceWith("this.sumOf(selector)")) @DeprecatedSinceKotlin(warningSince = "1.5") public inline fun IntArray.sumByDouble(selector: (Int) -> Double): Double { var sum: Double = 0.0 for (element in this) { sum += selector(element) } return sum } /** * Returns the sum of all values produced by [selector] function applied to each element in the array. */ @Deprecated("Use sumOf instead.", ReplaceWith("this.sumOf(selector)")) @DeprecatedSinceKotlin(warningSince = "1.5") public inline fun LongArray.sumByDouble(selector: (Long) -> Double): Double { var sum: Double = 0.0 for (element in this) { sum += selector(element) } return sum } /** * Returns the sum of all values produced by [selector] function applied to each element in the array. */ @Deprecated("Use sumOf instead.", ReplaceWith("this.sumOf(selector)")) @DeprecatedSinceKotlin(warningSince = "1.5") public inline fun FloatArray.sumByDouble(selector: (Float) -> Double): Double { var sum: Double = 0.0 for (element in this) { sum += selector(element) } return sum } /** * Returns the sum of all values produced by [selector] function applied to each element in the array. */ @Deprecated("Use sumOf instead.", ReplaceWith("this.sumOf(selector)")) @DeprecatedSinceKotlin(warningSince = "1.5") public inline fun DoubleArray.sumByDouble(selector: (Double) -> Double): Double { var sum: Double = 0.0 for (element in this) { sum += selector(element) } return sum } /** * Returns the sum of all values produced by [selector] function applied to each element in the array. */ @Deprecated("Use sumOf instead.", ReplaceWith("this.sumOf(selector)")) @DeprecatedSinceKotlin(warningSince = "1.5") public inline fun BooleanArray.sumByDouble(selector: (Boolean) -> Double): Double { var sum: Double = 0.0 for (element in this) { sum += selector(element) } return sum } /** * Returns the sum of all values produced by [selector] function applied to each element in the array. */ @Deprecated("Use sumOf instead.", ReplaceWith("this.sumOf(selector)")) @DeprecatedSinceKotlin(warningSince = "1.5") public inline fun CharArray.sumByDouble(selector: (Char) -> Double): Double { var sum: Double = 0.0 for (element in this) { sum += selector(element) } return sum } /** * Returns the sum of all values produced by [selector] function applied to each element in the array. */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.jvm.JvmName("sumOfDouble") @kotlin.internal.InlineOnly public inline fun Array.sumOf(selector: (T) -> Double): Double { var sum: Double = 0.toDouble() for (element in this) { sum += selector(element) } return sum } /** * Returns the sum of all values produced by [selector] function applied to each element in the array. */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.jvm.JvmName("sumOfDouble") @kotlin.internal.InlineOnly public inline fun ByteArray.sumOf(selector: (Byte) -> Double): Double { var sum: Double = 0.toDouble() for (element in this) { sum += selector(element) } return sum } /** * Returns the sum of all values produced by [selector] function applied to each element in the array. */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.jvm.JvmName("sumOfDouble") @kotlin.internal.InlineOnly public inline fun ShortArray.sumOf(selector: (Short) -> Double): Double { var sum: Double = 0.toDouble() for (element in this) { sum += selector(element) } return sum } /** * Returns the sum of all values produced by [selector] function applied to each element in the array. */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.jvm.JvmName("sumOfDouble") @kotlin.internal.InlineOnly public inline fun IntArray.sumOf(selector: (Int) -> Double): Double { var sum: Double = 0.toDouble() for (element in this) { sum += selector(element) } return sum } /** * Returns the sum of all values produced by [selector] function applied to each element in the array. */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.jvm.JvmName("sumOfDouble") @kotlin.internal.InlineOnly public inline fun LongArray.sumOf(selector: (Long) -> Double): Double { var sum: Double = 0.toDouble() for (element in this) { sum += selector(element) } return sum } /** * Returns the sum of all values produced by [selector] function applied to each element in the array. */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.jvm.JvmName("sumOfDouble") @kotlin.internal.InlineOnly public inline fun FloatArray.sumOf(selector: (Float) -> Double): Double { var sum: Double = 0.toDouble() for (element in this) { sum += selector(element) } return sum } /** * Returns the sum of all values produced by [selector] function applied to each element in the array. */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.jvm.JvmName("sumOfDouble") @kotlin.internal.InlineOnly public inline fun DoubleArray.sumOf(selector: (Double) -> Double): Double { var sum: Double = 0.toDouble() for (element in this) { sum += selector(element) } return sum } /** * Returns the sum of all values produced by [selector] function applied to each element in the array. */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.jvm.JvmName("sumOfDouble") @kotlin.internal.InlineOnly public inline fun BooleanArray.sumOf(selector: (Boolean) -> Double): Double { var sum: Double = 0.toDouble() for (element in this) { sum += selector(element) } return sum } /** * Returns the sum of all values produced by [selector] function applied to each element in the array. */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.jvm.JvmName("sumOfDouble") @kotlin.internal.InlineOnly public inline fun CharArray.sumOf(selector: (Char) -> Double): Double { var sum: Double = 0.toDouble() for (element in this) { sum += selector(element) } return sum } /** * Returns the sum of all values produced by [selector] function applied to each element in the array. */ @SinceKotlin("1.4") @kotlin.jvm.JvmName("sumOfInt") @kotlin.internal.InlineOnly public inline fun Array.sumOf(selector: (T) -> Int): Int { var sum: Int = 0.toInt() for (element in this) { sum += selector(element) } return sum } /** * Returns the sum of all values produced by [selector] function applied to each element in the array. */ @SinceKotlin("1.4") @kotlin.jvm.JvmName("sumOfInt") @kotlin.internal.InlineOnly public inline fun ByteArray.sumOf(selector: (Byte) -> Int): Int { var sum: Int = 0.toInt() for (element in this) { sum += selector(element) } return sum } /** * Returns the sum of all values produced by [selector] function applied to each element in the array. */ @SinceKotlin("1.4") @kotlin.jvm.JvmName("sumOfInt") @kotlin.internal.InlineOnly public inline fun ShortArray.sumOf(selector: (Short) -> Int): Int { var sum: Int = 0.toInt() for (element in this) { sum += selector(element) } return sum } /** * Returns the sum of all values produced by [selector] function applied to each element in the array. */ @SinceKotlin("1.4") @kotlin.jvm.JvmName("sumOfInt") @kotlin.internal.InlineOnly public inline fun IntArray.sumOf(selector: (Int) -> Int): Int { var sum: Int = 0.toInt() for (element in this) { sum += selector(element) } return sum } /** * Returns the sum of all values produced by [selector] function applied to each element in the array. */ @SinceKotlin("1.4") @kotlin.jvm.JvmName("sumOfInt") @kotlin.internal.InlineOnly public inline fun LongArray.sumOf(selector: (Long) -> Int): Int { var sum: Int = 0.toInt() for (element in this) { sum += selector(element) } return sum } /** * Returns the sum of all values produced by [selector] function applied to each element in the array. */ @SinceKotlin("1.4") @kotlin.jvm.JvmName("sumOfInt") @kotlin.internal.InlineOnly public inline fun FloatArray.sumOf(selector: (Float) -> Int): Int { var sum: Int = 0.toInt() for (element in this) { sum += selector(element) } return sum } /** * Returns the sum of all values produced by [selector] function applied to each element in the array. */ @SinceKotlin("1.4") @kotlin.jvm.JvmName("sumOfInt") @kotlin.internal.InlineOnly public inline fun DoubleArray.sumOf(selector: (Double) -> Int): Int { var sum: Int = 0.toInt() for (element in this) { sum += selector(element) } return sum } /** * Returns the sum of all values produced by [selector] function applied to each element in the array. */ @SinceKotlin("1.4") @kotlin.jvm.JvmName("sumOfInt") @kotlin.internal.InlineOnly public inline fun BooleanArray.sumOf(selector: (Boolean) -> Int): Int { var sum: Int = 0.toInt() for (element in this) { sum += selector(element) } return sum } /** * Returns the sum of all values produced by [selector] function applied to each element in the array. */ @SinceKotlin("1.4") @kotlin.jvm.JvmName("sumOfInt") @kotlin.internal.InlineOnly public inline fun CharArray.sumOf(selector: (Char) -> Int): Int { var sum: Int = 0.toInt() for (element in this) { sum += selector(element) } return sum } /** * Returns the sum of all values produced by [selector] function applied to each element in the array. */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.jvm.JvmName("sumOfLong") @kotlin.internal.InlineOnly public inline fun Array.sumOf(selector: (T) -> Long): Long { var sum: Long = 0.toLong() for (element in this) { sum += selector(element) } return sum } /** * Returns the sum of all values produced by [selector] function applied to each element in the array. */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.jvm.JvmName("sumOfLong") @kotlin.internal.InlineOnly public inline fun ByteArray.sumOf(selector: (Byte) -> Long): Long { var sum: Long = 0.toLong() for (element in this) { sum += selector(element) } return sum } /** * Returns the sum of all values produced by [selector] function applied to each element in the array. */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.jvm.JvmName("sumOfLong") @kotlin.internal.InlineOnly public inline fun ShortArray.sumOf(selector: (Short) -> Long): Long { var sum: Long = 0.toLong() for (element in this) { sum += selector(element) } return sum } /** * Returns the sum of all values produced by [selector] function applied to each element in the array. */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.jvm.JvmName("sumOfLong") @kotlin.internal.InlineOnly public inline fun IntArray.sumOf(selector: (Int) -> Long): Long { var sum: Long = 0.toLong() for (element in this) { sum += selector(element) } return sum } /** * Returns the sum of all values produced by [selector] function applied to each element in the array. */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.jvm.JvmName("sumOfLong") @kotlin.internal.InlineOnly public inline fun LongArray.sumOf(selector: (Long) -> Long): Long { var sum: Long = 0.toLong() for (element in this) { sum += selector(element) } return sum } /** * Returns the sum of all values produced by [selector] function applied to each element in the array. */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.jvm.JvmName("sumOfLong") @kotlin.internal.InlineOnly public inline fun FloatArray.sumOf(selector: (Float) -> Long): Long { var sum: Long = 0.toLong() for (element in this) { sum += selector(element) } return sum } /** * Returns the sum of all values produced by [selector] function applied to each element in the array. */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.jvm.JvmName("sumOfLong") @kotlin.internal.InlineOnly public inline fun DoubleArray.sumOf(selector: (Double) -> Long): Long { var sum: Long = 0.toLong() for (element in this) { sum += selector(element) } return sum } /** * Returns the sum of all values produced by [selector] function applied to each element in the array. */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.jvm.JvmName("sumOfLong") @kotlin.internal.InlineOnly public inline fun BooleanArray.sumOf(selector: (Boolean) -> Long): Long { var sum: Long = 0.toLong() for (element in this) { sum += selector(element) } return sum } /** * Returns the sum of all values produced by [selector] function applied to each element in the array. */ @SinceKotlin("1.4") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.jvm.JvmName("sumOfLong") @kotlin.internal.InlineOnly public inline fun CharArray.sumOf(selector: (Char) -> Long): Long { var sum: Long = 0.toLong() for (element in this) { sum += selector(element) } return sum } /** * Returns the sum of all values produced by [selector] function applied to each element in the array. */ @SinceKotlin("1.5") @kotlin.jvm.JvmName("sumOfUInt") @kotlin.internal.InlineOnly public inline fun Array.sumOf(selector: (T) -> UInt): UInt { var sum: UInt = 0.toUInt() for (element in this) { sum += selector(element) } return sum } /** * Returns the sum of all values produced by [selector] function applied to each element in the array. */ @SinceKotlin("1.5") @kotlin.jvm.JvmName("sumOfUInt") @kotlin.internal.InlineOnly public inline fun ByteArray.sumOf(selector: (Byte) -> UInt): UInt { var sum: UInt = 0.toUInt() for (element in this) { sum += selector(element) } return sum } /** * Returns the sum of all values produced by [selector] function applied to each element in the array. */ @SinceKotlin("1.5") @kotlin.jvm.JvmName("sumOfUInt") @kotlin.internal.InlineOnly public inline fun ShortArray.sumOf(selector: (Short) -> UInt): UInt { var sum: UInt = 0.toUInt() for (element in this) { sum += selector(element) } return sum } /** * Returns the sum of all values produced by [selector] function applied to each element in the array. */ @SinceKotlin("1.5") @kotlin.jvm.JvmName("sumOfUInt") @kotlin.internal.InlineOnly public inline fun IntArray.sumOf(selector: (Int) -> UInt): UInt { var sum: UInt = 0.toUInt() for (element in this) { sum += selector(element) } return sum } /** * Returns the sum of all values produced by [selector] function applied to each element in the array. */ @SinceKotlin("1.5") @kotlin.jvm.JvmName("sumOfUInt") @kotlin.internal.InlineOnly public inline fun LongArray.sumOf(selector: (Long) -> UInt): UInt { var sum: UInt = 0.toUInt() for (element in this) { sum += selector(element) } return sum } /** * Returns the sum of all values produced by [selector] function applied to each element in the array. */ @SinceKotlin("1.5") @kotlin.jvm.JvmName("sumOfUInt") @kotlin.internal.InlineOnly public inline fun FloatArray.sumOf(selector: (Float) -> UInt): UInt { var sum: UInt = 0.toUInt() for (element in this) { sum += selector(element) } return sum } /** * Returns the sum of all values produced by [selector] function applied to each element in the array. */ @SinceKotlin("1.5") @kotlin.jvm.JvmName("sumOfUInt") @kotlin.internal.InlineOnly public inline fun DoubleArray.sumOf(selector: (Double) -> UInt): UInt { var sum: UInt = 0.toUInt() for (element in this) { sum += selector(element) } return sum } /** * Returns the sum of all values produced by [selector] function applied to each element in the array. */ @SinceKotlin("1.5") @kotlin.jvm.JvmName("sumOfUInt") @kotlin.internal.InlineOnly public inline fun BooleanArray.sumOf(selector: (Boolean) -> UInt): UInt { var sum: UInt = 0.toUInt() for (element in this) { sum += selector(element) } return sum } /** * Returns the sum of all values produced by [selector] function applied to each element in the array. */ @SinceKotlin("1.5") @kotlin.jvm.JvmName("sumOfUInt") @kotlin.internal.InlineOnly public inline fun CharArray.sumOf(selector: (Char) -> UInt): UInt { var sum: UInt = 0.toUInt() for (element in this) { sum += selector(element) } return sum } /** * Returns the sum of all values produced by [selector] function applied to each element in the array. */ @SinceKotlin("1.5") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.jvm.JvmName("sumOfULong") @kotlin.internal.InlineOnly public inline fun Array.sumOf(selector: (T) -> ULong): ULong { var sum: ULong = 0.toULong() for (element in this) { sum += selector(element) } return sum } /** * Returns the sum of all values produced by [selector] function applied to each element in the array. */ @SinceKotlin("1.5") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.jvm.JvmName("sumOfULong") @kotlin.internal.InlineOnly public inline fun ByteArray.sumOf(selector: (Byte) -> ULong): ULong { var sum: ULong = 0.toULong() for (element in this) { sum += selector(element) } return sum } /** * Returns the sum of all values produced by [selector] function applied to each element in the array. */ @SinceKotlin("1.5") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.jvm.JvmName("sumOfULong") @kotlin.internal.InlineOnly public inline fun ShortArray.sumOf(selector: (Short) -> ULong): ULong { var sum: ULong = 0.toULong() for (element in this) { sum += selector(element) } return sum } /** * Returns the sum of all values produced by [selector] function applied to each element in the array. */ @SinceKotlin("1.5") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.jvm.JvmName("sumOfULong") @kotlin.internal.InlineOnly public inline fun IntArray.sumOf(selector: (Int) -> ULong): ULong { var sum: ULong = 0.toULong() for (element in this) { sum += selector(element) } return sum } /** * Returns the sum of all values produced by [selector] function applied to each element in the array. */ @SinceKotlin("1.5") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.jvm.JvmName("sumOfULong") @kotlin.internal.InlineOnly public inline fun LongArray.sumOf(selector: (Long) -> ULong): ULong { var sum: ULong = 0.toULong() for (element in this) { sum += selector(element) } return sum } /** * Returns the sum of all values produced by [selector] function applied to each element in the array. */ @SinceKotlin("1.5") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.jvm.JvmName("sumOfULong") @kotlin.internal.InlineOnly public inline fun FloatArray.sumOf(selector: (Float) -> ULong): ULong { var sum: ULong = 0.toULong() for (element in this) { sum += selector(element) } return sum } /** * Returns the sum of all values produced by [selector] function applied to each element in the array. */ @SinceKotlin("1.5") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.jvm.JvmName("sumOfULong") @kotlin.internal.InlineOnly public inline fun DoubleArray.sumOf(selector: (Double) -> ULong): ULong { var sum: ULong = 0.toULong() for (element in this) { sum += selector(element) } return sum } /** * Returns the sum of all values produced by [selector] function applied to each element in the array. */ @SinceKotlin("1.5") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.jvm.JvmName("sumOfULong") @kotlin.internal.InlineOnly public inline fun BooleanArray.sumOf(selector: (Boolean) -> ULong): ULong { var sum: ULong = 0.toULong() for (element in this) { sum += selector(element) } return sum } /** * Returns the sum of all values produced by [selector] function applied to each element in the array. */ @SinceKotlin("1.5") @OptIn(kotlin.experimental.ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType @kotlin.jvm.JvmName("sumOfULong") @kotlin.internal.InlineOnly public inline fun CharArray.sumOf(selector: (Char) -> ULong): ULong { var sum: ULong = 0.toULong() for (element in this) { sum += selector(element) } return sum } /** * Returns an original collection containing all the non-`null` elements, throwing an [IllegalArgumentException] if there are any `null` elements. */ public fun Array.requireNoNulls(): Array { for (element in this) { if (element == null) { throw IllegalArgumentException("null element found in $this.") } } @Suppress("UNCHECKED_CAST") return this as Array } /** * Splits the original array into a pair of lists, * where *first* list contains elements for which [predicate] yielded `true`, * while *second* list contains elements for which [predicate] yielded `false`. * * @sample samples.collections.Arrays.Transformations.partitionArrayOfPrimitives */ public inline fun Array.partition(predicate: (T) -> Boolean): Pair, List> { val first = ArrayList() val second = ArrayList() for (element in this) { if (predicate(element)) { first.add(element) } else { second.add(element) } } return Pair(first, second) } /** * Splits the original array into a pair of lists, * where *first* list contains elements for which [predicate] yielded `true`, * while *second* list contains elements for which [predicate] yielded `false`. * * @sample samples.collections.Arrays.Transformations.partitionArrayOfPrimitives */ public inline fun ByteArray.partition(predicate: (Byte) -> Boolean): Pair, List> { val first = ArrayList() val second = ArrayList() for (element in this) { if (predicate(element)) { first.add(element) } else { second.add(element) } } return Pair(first, second) } /** * Splits the original array into a pair of lists, * where *first* list contains elements for which [predicate] yielded `true`, * while *second* list contains elements for which [predicate] yielded `false`. * * @sample samples.collections.Arrays.Transformations.partitionArrayOfPrimitives */ public inline fun ShortArray.partition(predicate: (Short) -> Boolean): Pair, List> { val first = ArrayList() val second = ArrayList() for (element in this) { if (predicate(element)) { first.add(element) } else { second.add(element) } } return Pair(first, second) } /** * Splits the original array into a pair of lists, * where *first* list contains elements for which [predicate] yielded `true`, * while *second* list contains elements for which [predicate] yielded `false`. * * @sample samples.collections.Arrays.Transformations.partitionArrayOfPrimitives */ public inline fun IntArray.partition(predicate: (Int) -> Boolean): Pair, List> { val first = ArrayList() val second = ArrayList() for (element in this) { if (predicate(element)) { first.add(element) } else { second.add(element) } } return Pair(first, second) } /** * Splits the original array into a pair of lists, * where *first* list contains elements for which [predicate] yielded `true`, * while *second* list contains elements for which [predicate] yielded `false`. * * @sample samples.collections.Arrays.Transformations.partitionArrayOfPrimitives */ public inline fun LongArray.partition(predicate: (Long) -> Boolean): Pair, List> { val first = ArrayList() val second = ArrayList() for (element in this) { if (predicate(element)) { first.add(element) } else { second.add(element) } } return Pair(first, second) } /** * Splits the original array into a pair of lists, * where *first* list contains elements for which [predicate] yielded `true`, * while *second* list contains elements for which [predicate] yielded `false`. * * @sample samples.collections.Arrays.Transformations.partitionArrayOfPrimitives */ public inline fun FloatArray.partition(predicate: (Float) -> Boolean): Pair, List> { val first = ArrayList() val second = ArrayList() for (element in this) { if (predicate(element)) { first.add(element) } else { second.add(element) } } return Pair(first, second) } /** * Splits the original array into a pair of lists, * where *first* list contains elements for which [predicate] yielded `true`, * while *second* list contains elements for which [predicate] yielded `false`. * * @sample samples.collections.Arrays.Transformations.partitionArrayOfPrimitives */ public inline fun DoubleArray.partition(predicate: (Double) -> Boolean): Pair, List> { val first = ArrayList() val second = ArrayList() for (element in this) { if (predicate(element)) { first.add(element) } else { second.add(element) } } return Pair(first, second) } /** * Splits the original array into a pair of lists, * where *first* list contains elements for which [predicate] yielded `true`, * while *second* list contains elements for which [predicate] yielded `false`. * * @sample samples.collections.Arrays.Transformations.partitionArrayOfPrimitives */ public inline fun BooleanArray.partition(predicate: (Boolean) -> Boolean): Pair, List> { val first = ArrayList() val second = ArrayList() for (element in this) { if (predicate(element)) { first.add(element) } else { second.add(element) } } return Pair(first, second) } /** * Splits the original array into a pair of lists, * where *first* list contains elements for which [predicate] yielded `true`, * while *second* list contains elements for which [predicate] yielded `false`. * * @sample samples.collections.Arrays.Transformations.partitionArrayOfPrimitives */ public inline fun CharArray.partition(predicate: (Char) -> Boolean): Pair, List> { val first = ArrayList() val second = ArrayList() for (element in this) { if (predicate(element)) { first.add(element) } else { second.add(element) } } return Pair(first, second) } /** * Returns a list of pairs built from the elements of `this` array and the [other] array with the same index. * The returned list has length of the shortest collection. * * @sample samples.collections.Iterables.Operations.zipIterable */ public infix fun Array.zip(other: Array): List> { return zip(other) { t1, t2 -> t1 to t2 } } /** * Returns a list of pairs built from the elements of `this` array and the [other] array with the same index. * The returned list has length of the shortest collection. * * @sample samples.collections.Iterables.Operations.zipIterable */ public infix fun ByteArray.zip(other: Array): List> { return zip(other) { t1, t2 -> t1 to t2 } } /** * Returns a list of pairs built from the elements of `this` array and the [other] array with the same index. * The returned list has length of the shortest collection. * * @sample samples.collections.Iterables.Operations.zipIterable */ public infix fun ShortArray.zip(other: Array): List> { return zip(other) { t1, t2 -> t1 to t2 } } /** * Returns a list of pairs built from the elements of `this` array and the [other] array with the same index. * The returned list has length of the shortest collection. * * @sample samples.collections.Iterables.Operations.zipIterable */ public infix fun IntArray.zip(other: Array): List> { return zip(other) { t1, t2 -> t1 to t2 } } /** * Returns a list of pairs built from the elements of `this` array and the [other] array with the same index. * The returned list has length of the shortest collection. * * @sample samples.collections.Iterables.Operations.zipIterable */ public infix fun LongArray.zip(other: Array): List> { return zip(other) { t1, t2 -> t1 to t2 } } /** * Returns a list of pairs built from the elements of `this` array and the [other] array with the same index. * The returned list has length of the shortest collection. * * @sample samples.collections.Iterables.Operations.zipIterable */ public infix fun FloatArray.zip(other: Array): List> { return zip(other) { t1, t2 -> t1 to t2 } } /** * Returns a list of pairs built from the elements of `this` array and the [other] array with the same index. * The returned list has length of the shortest collection. * * @sample samples.collections.Iterables.Operations.zipIterable */ public infix fun DoubleArray.zip(other: Array): List> { return zip(other) { t1, t2 -> t1 to t2 } } /** * Returns a list of pairs built from the elements of `this` array and the [other] array with the same index. * The returned list has length of the shortest collection. * * @sample samples.collections.Iterables.Operations.zipIterable */ public infix fun BooleanArray.zip(other: Array): List> { return zip(other) { t1, t2 -> t1 to t2 } } /** * Returns a list of pairs built from the elements of `this` array and the [other] array with the same index. * The returned list has length of the shortest collection. * * @sample samples.collections.Iterables.Operations.zipIterable */ public infix fun CharArray.zip(other: Array): List> { return zip(other) { t1, t2 -> t1 to t2 } } /** * Returns a list of values built from the elements of `this` array and the [other] array with the same index * using the provided [transform] function applied to each pair of elements. * The returned list has length of the shortest collection. * * @sample samples.collections.Iterables.Operations.zipIterableWithTransform */ public inline fun Array.zip(other: Array, transform: (a: T, b: R) -> V): List { val size = minOf(size, other.size) val list = ArrayList(size) for (i in 0 until size) { list.add(transform(this[i], other[i])) } return list } /** * Returns a list of values built from the elements of `this` array and the [other] array with the same index * using the provided [transform] function applied to each pair of elements. * The returned list has length of the shortest collection. * * @sample samples.collections.Iterables.Operations.zipIterableWithTransform */ public inline fun ByteArray.zip(other: Array, transform: (a: Byte, b: R) -> V): List { val size = minOf(size, other.size) val list = ArrayList(size) for (i in 0 until size) { list.add(transform(this[i], other[i])) } return list } /** * Returns a list of values built from the elements of `this` array and the [other] array with the same index * using the provided [transform] function applied to each pair of elements. * The returned list has length of the shortest collection. * * @sample samples.collections.Iterables.Operations.zipIterableWithTransform */ public inline fun ShortArray.zip(other: Array, transform: (a: Short, b: R) -> V): List { val size = minOf(size, other.size) val list = ArrayList(size) for (i in 0 until size) { list.add(transform(this[i], other[i])) } return list } /** * Returns a list of values built from the elements of `this` array and the [other] array with the same index * using the provided [transform] function applied to each pair of elements. * The returned list has length of the shortest collection. * * @sample samples.collections.Iterables.Operations.zipIterableWithTransform */ public inline fun IntArray.zip(other: Array, transform: (a: Int, b: R) -> V): List { val size = minOf(size, other.size) val list = ArrayList(size) for (i in 0 until size) { list.add(transform(this[i], other[i])) } return list } /** * Returns a list of values built from the elements of `this` array and the [other] array with the same index * using the provided [transform] function applied to each pair of elements. * The returned list has length of the shortest collection. * * @sample samples.collections.Iterables.Operations.zipIterableWithTransform */ public inline fun LongArray.zip(other: Array, transform: (a: Long, b: R) -> V): List { val size = minOf(size, other.size) val list = ArrayList(size) for (i in 0 until size) { list.add(transform(this[i], other[i])) } return list } /** * Returns a list of values built from the elements of `this` array and the [other] array with the same index * using the provided [transform] function applied to each pair of elements. * The returned list has length of the shortest collection. * * @sample samples.collections.Iterables.Operations.zipIterableWithTransform */ public inline fun FloatArray.zip(other: Array, transform: (a: Float, b: R) -> V): List { val size = minOf(size, other.size) val list = ArrayList(size) for (i in 0 until size) { list.add(transform(this[i], other[i])) } return list } /** * Returns a list of values built from the elements of `this` array and the [other] array with the same index * using the provided [transform] function applied to each pair of elements. * The returned list has length of the shortest collection. * * @sample samples.collections.Iterables.Operations.zipIterableWithTransform */ public inline fun DoubleArray.zip(other: Array, transform: (a: Double, b: R) -> V): List { val size = minOf(size, other.size) val list = ArrayList(size) for (i in 0 until size) { list.add(transform(this[i], other[i])) } return list } /** * Returns a list of values built from the elements of `this` array and the [other] array with the same index * using the provided [transform] function applied to each pair of elements. * The returned list has length of the shortest collection. * * @sample samples.collections.Iterables.Operations.zipIterableWithTransform */ public inline fun BooleanArray.zip(other: Array, transform: (a: Boolean, b: R) -> V): List { val size = minOf(size, other.size) val list = ArrayList(size) for (i in 0 until size) { list.add(transform(this[i], other[i])) } return list } /** * Returns a list of values built from the elements of `this` array and the [other] array with the same index * using the provided [transform] function applied to each pair of elements. * The returned list has length of the shortest collection. * * @sample samples.collections.Iterables.Operations.zipIterableWithTransform */ public inline fun CharArray.zip(other: Array, transform: (a: Char, b: R) -> V): List { val size = minOf(size, other.size) val list = ArrayList(size) for (i in 0 until size) { list.add(transform(this[i], other[i])) } return list } /** * Returns a list of pairs built from the elements of `this` collection and [other] array with the same index. * The returned list has length of the shortest collection. * * @sample samples.collections.Iterables.Operations.zipIterable */ public infix fun Array.zip(other: Iterable): List> { return zip(other) { t1, t2 -> t1 to t2 } } /** * Returns a list of pairs built from the elements of `this` collection and [other] array with the same index. * The returned list has length of the shortest collection. * * @sample samples.collections.Iterables.Operations.zipIterable */ public infix fun ByteArray.zip(other: Iterable): List> { return zip(other) { t1, t2 -> t1 to t2 } } /** * Returns a list of pairs built from the elements of `this` collection and [other] array with the same index. * The returned list has length of the shortest collection. * * @sample samples.collections.Iterables.Operations.zipIterable */ public infix fun ShortArray.zip(other: Iterable): List> { return zip(other) { t1, t2 -> t1 to t2 } } /** * Returns a list of pairs built from the elements of `this` collection and [other] array with the same index. * The returned list has length of the shortest collection. * * @sample samples.collections.Iterables.Operations.zipIterable */ public infix fun IntArray.zip(other: Iterable): List> { return zip(other) { t1, t2 -> t1 to t2 } } /** * Returns a list of pairs built from the elements of `this` collection and [other] array with the same index. * The returned list has length of the shortest collection. * * @sample samples.collections.Iterables.Operations.zipIterable */ public infix fun LongArray.zip(other: Iterable): List> { return zip(other) { t1, t2 -> t1 to t2 } } /** * Returns a list of pairs built from the elements of `this` collection and [other] array with the same index. * The returned list has length of the shortest collection. * * @sample samples.collections.Iterables.Operations.zipIterable */ public infix fun FloatArray.zip(other: Iterable): List> { return zip(other) { t1, t2 -> t1 to t2 } } /** * Returns a list of pairs built from the elements of `this` collection and [other] array with the same index. * The returned list has length of the shortest collection. * * @sample samples.collections.Iterables.Operations.zipIterable */ public infix fun DoubleArray.zip(other: Iterable): List> { return zip(other) { t1, t2 -> t1 to t2 } } /** * Returns a list of pairs built from the elements of `this` collection and [other] array with the same index. * The returned list has length of the shortest collection. * * @sample samples.collections.Iterables.Operations.zipIterable */ public infix fun BooleanArray.zip(other: Iterable): List> { return zip(other) { t1, t2 -> t1 to t2 } } /** * Returns a list of pairs built from the elements of `this` collection and [other] array with the same index. * The returned list has length of the shortest collection. * * @sample samples.collections.Iterables.Operations.zipIterable */ public infix fun CharArray.zip(other: Iterable): List> { return zip(other) { t1, t2 -> t1 to t2 } } /** * Returns a list of values built from the elements of `this` array and the [other] collection with the same index * using the provided [transform] function applied to each pair of elements. * The returned list has length of the shortest collection. * * @sample samples.collections.Iterables.Operations.zipIterableWithTransform */ public inline fun Array.zip(other: Iterable, transform: (a: T, b: R) -> V): List { val arraySize = size val list = ArrayList(minOf(other.collectionSizeOrDefault(10), arraySize)) var i = 0 for (element in other) { if (i >= arraySize) break list.add(transform(this[i++], element)) } return list } /** * Returns a list of values built from the elements of `this` array and the [other] collection with the same index * using the provided [transform] function applied to each pair of elements. * The returned list has length of the shortest collection. * * @sample samples.collections.Iterables.Operations.zipIterableWithTransform */ public inline fun ByteArray.zip(other: Iterable, transform: (a: Byte, b: R) -> V): List { val arraySize = size val list = ArrayList(minOf(other.collectionSizeOrDefault(10), arraySize)) var i = 0 for (element in other) { if (i >= arraySize) break list.add(transform(this[i++], element)) } return list } /** * Returns a list of values built from the elements of `this` array and the [other] collection with the same index * using the provided [transform] function applied to each pair of elements. * The returned list has length of the shortest collection. * * @sample samples.collections.Iterables.Operations.zipIterableWithTransform */ public inline fun ShortArray.zip(other: Iterable, transform: (a: Short, b: R) -> V): List { val arraySize = size val list = ArrayList(minOf(other.collectionSizeOrDefault(10), arraySize)) var i = 0 for (element in other) { if (i >= arraySize) break list.add(transform(this[i++], element)) } return list } /** * Returns a list of values built from the elements of `this` array and the [other] collection with the same index * using the provided [transform] function applied to each pair of elements. * The returned list has length of the shortest collection. * * @sample samples.collections.Iterables.Operations.zipIterableWithTransform */ public inline fun IntArray.zip(other: Iterable, transform: (a: Int, b: R) -> V): List { val arraySize = size val list = ArrayList(minOf(other.collectionSizeOrDefault(10), arraySize)) var i = 0 for (element in other) { if (i >= arraySize) break list.add(transform(this[i++], element)) } return list } /** * Returns a list of values built from the elements of `this` array and the [other] collection with the same index * using the provided [transform] function applied to each pair of elements. * The returned list has length of the shortest collection. * * @sample samples.collections.Iterables.Operations.zipIterableWithTransform */ public inline fun LongArray.zip(other: Iterable, transform: (a: Long, b: R) -> V): List { val arraySize = size val list = ArrayList(minOf(other.collectionSizeOrDefault(10), arraySize)) var i = 0 for (element in other) { if (i >= arraySize) break list.add(transform(this[i++], element)) } return list } /** * Returns a list of values built from the elements of `this` array and the [other] collection with the same index * using the provided [transform] function applied to each pair of elements. * The returned list has length of the shortest collection. * * @sample samples.collections.Iterables.Operations.zipIterableWithTransform */ public inline fun FloatArray.zip(other: Iterable, transform: (a: Float, b: R) -> V): List { val arraySize = size val list = ArrayList(minOf(other.collectionSizeOrDefault(10), arraySize)) var i = 0 for (element in other) { if (i >= arraySize) break list.add(transform(this[i++], element)) } return list } /** * Returns a list of values built from the elements of `this` array and the [other] collection with the same index * using the provided [transform] function applied to each pair of elements. * The returned list has length of the shortest collection. * * @sample samples.collections.Iterables.Operations.zipIterableWithTransform */ public inline fun DoubleArray.zip(other: Iterable, transform: (a: Double, b: R) -> V): List { val arraySize = size val list = ArrayList(minOf(other.collectionSizeOrDefault(10), arraySize)) var i = 0 for (element in other) { if (i >= arraySize) break list.add(transform(this[i++], element)) } return list } /** * Returns a list of values built from the elements of `this` array and the [other] collection with the same index * using the provided [transform] function applied to each pair of elements. * The returned list has length of the shortest collection. * * @sample samples.collections.Iterables.Operations.zipIterableWithTransform */ public inline fun BooleanArray.zip(other: Iterable, transform: (a: Boolean, b: R) -> V): List { val arraySize = size val list = ArrayList(minOf(other.collectionSizeOrDefault(10), arraySize)) var i = 0 for (element in other) { if (i >= arraySize) break list.add(transform(this[i++], element)) } return list } /** * Returns a list of values built from the elements of `this` array and the [other] collection with the same index * using the provided [transform] function applied to each pair of elements. * The returned list has length of the shortest collection. * * @sample samples.collections.Iterables.Operations.zipIterableWithTransform */ public inline fun CharArray.zip(other: Iterable, transform: (a: Char, b: R) -> V): List { val arraySize = size val list = ArrayList(minOf(other.collectionSizeOrDefault(10), arraySize)) var i = 0 for (element in other) { if (i >= arraySize) break list.add(transform(this[i++], element)) } return list } /** * Returns a list of pairs built from the elements of `this` array and the [other] array with the same index. * The returned list has length of the shortest collection. * * @sample samples.collections.Iterables.Operations.zipIterable */ public infix fun ByteArray.zip(other: ByteArray): List> { return zip(other) { t1, t2 -> t1 to t2 } } /** * Returns a list of pairs built from the elements of `this` array and the [other] array with the same index. * The returned list has length of the shortest collection. * * @sample samples.collections.Iterables.Operations.zipIterable */ public infix fun ShortArray.zip(other: ShortArray): List> { return zip(other) { t1, t2 -> t1 to t2 } } /** * Returns a list of pairs built from the elements of `this` array and the [other] array with the same index. * The returned list has length of the shortest collection. * * @sample samples.collections.Iterables.Operations.zipIterable */ public infix fun IntArray.zip(other: IntArray): List> { return zip(other) { t1, t2 -> t1 to t2 } } /** * Returns a list of pairs built from the elements of `this` array and the [other] array with the same index. * The returned list has length of the shortest collection. * * @sample samples.collections.Iterables.Operations.zipIterable */ public infix fun LongArray.zip(other: LongArray): List> { return zip(other) { t1, t2 -> t1 to t2 } } /** * Returns a list of pairs built from the elements of `this` array and the [other] array with the same index. * The returned list has length of the shortest collection. * * @sample samples.collections.Iterables.Operations.zipIterable */ public infix fun FloatArray.zip(other: FloatArray): List> { return zip(other) { t1, t2 -> t1 to t2 } } /** * Returns a list of pairs built from the elements of `this` array and the [other] array with the same index. * The returned list has length of the shortest collection. * * @sample samples.collections.Iterables.Operations.zipIterable */ public infix fun DoubleArray.zip(other: DoubleArray): List> { return zip(other) { t1, t2 -> t1 to t2 } } /** * Returns a list of pairs built from the elements of `this` array and the [other] array with the same index. * The returned list has length of the shortest collection. * * @sample samples.collections.Iterables.Operations.zipIterable */ public infix fun BooleanArray.zip(other: BooleanArray): List> { return zip(other) { t1, t2 -> t1 to t2 } } /** * Returns a list of pairs built from the elements of `this` array and the [other] array with the same index. * The returned list has length of the shortest collection. * * @sample samples.collections.Iterables.Operations.zipIterable */ public infix fun CharArray.zip(other: CharArray): List> { return zip(other) { t1, t2 -> t1 to t2 } } /** * Returns a list of values built from the elements of `this` array and the [other] array with the same index * using the provided [transform] function applied to each pair of elements. * The returned list has length of the shortest array. * * @sample samples.collections.Iterables.Operations.zipIterableWithTransform */ public inline fun ByteArray.zip(other: ByteArray, transform: (a: Byte, b: Byte) -> V): List { val size = minOf(size, other.size) val list = ArrayList(size) for (i in 0 until size) { list.add(transform(this[i], other[i])) } return list } /** * Returns a list of values built from the elements of `this` array and the [other] array with the same index * using the provided [transform] function applied to each pair of elements. * The returned list has length of the shortest array. * * @sample samples.collections.Iterables.Operations.zipIterableWithTransform */ public inline fun ShortArray.zip(other: ShortArray, transform: (a: Short, b: Short) -> V): List { val size = minOf(size, other.size) val list = ArrayList(size) for (i in 0 until size) { list.add(transform(this[i], other[i])) } return list } /** * Returns a list of values built from the elements of `this` array and the [other] array with the same index * using the provided [transform] function applied to each pair of elements. * The returned list has length of the shortest array. * * @sample samples.collections.Iterables.Operations.zipIterableWithTransform */ public inline fun IntArray.zip(other: IntArray, transform: (a: Int, b: Int) -> V): List { val size = minOf(size, other.size) val list = ArrayList(size) for (i in 0 until size) { list.add(transform(this[i], other[i])) } return list } /** * Returns a list of values built from the elements of `this` array and the [other] array with the same index * using the provided [transform] function applied to each pair of elements. * The returned list has length of the shortest array. * * @sample samples.collections.Iterables.Operations.zipIterableWithTransform */ public inline fun LongArray.zip(other: LongArray, transform: (a: Long, b: Long) -> V): List { val size = minOf(size, other.size) val list = ArrayList(size) for (i in 0 until size) { list.add(transform(this[i], other[i])) } return list } /** * Returns a list of values built from the elements of `this` array and the [other] array with the same index * using the provided [transform] function applied to each pair of elements. * The returned list has length of the shortest array. * * @sample samples.collections.Iterables.Operations.zipIterableWithTransform */ public inline fun FloatArray.zip(other: FloatArray, transform: (a: Float, b: Float) -> V): List { val size = minOf(size, other.size) val list = ArrayList(size) for (i in 0 until size) { list.add(transform(this[i], other[i])) } return list } /** * Returns a list of values built from the elements of `this` array and the [other] array with the same index * using the provided [transform] function applied to each pair of elements. * The returned list has length of the shortest array. * * @sample samples.collections.Iterables.Operations.zipIterableWithTransform */ public inline fun DoubleArray.zip(other: DoubleArray, transform: (a: Double, b: Double) -> V): List { val size = minOf(size, other.size) val list = ArrayList(size) for (i in 0 until size) { list.add(transform(this[i], other[i])) } return list } /** * Returns a list of values built from the elements of `this` array and the [other] array with the same index * using the provided [transform] function applied to each pair of elements. * The returned list has length of the shortest array. * * @sample samples.collections.Iterables.Operations.zipIterableWithTransform */ public inline fun BooleanArray.zip(other: BooleanArray, transform: (a: Boolean, b: Boolean) -> V): List { val size = minOf(size, other.size) val list = ArrayList(size) for (i in 0 until size) { list.add(transform(this[i], other[i])) } return list } /** * Returns a list of values built from the elements of `this` array and the [other] array with the same index * using the provided [transform] function applied to each pair of elements. * The returned list has length of the shortest array. * * @sample samples.collections.Iterables.Operations.zipIterableWithTransform */ public inline fun CharArray.zip(other: CharArray, transform: (a: Char, b: Char) -> V): List { val size = minOf(size, other.size) val list = ArrayList(size) for (i in 0 until size) { list.add(transform(this[i], other[i])) } return list } /** * Appends the string from all the elements separated using [separator] and using the given [prefix] and [postfix] if supplied. * * If the collection could be huge, you can specify a non-negative value of [limit], in which case only the first [limit] * elements will be appended, followed by the [truncated] string (which defaults to "..."). * * @sample samples.collections.Collections.Transformations.joinTo */ public fun Array.joinTo(buffer: A, separator: CharSequence = ", ", prefix: CharSequence = "", postfix: CharSequence = "", limit: Int = -1, truncated: CharSequence = "...", transform: ((T) -> CharSequence)? = null): A { buffer.append(prefix) var count = 0 for (element in this) { if (++count > 1) buffer.append(separator) if (limit < 0 || count <= limit) { buffer.appendElement(element, transform) } else break } if (limit >= 0 && count > limit) buffer.append(truncated) buffer.append(postfix) return buffer } /** * Appends the string from all the elements separated using [separator] and using the given [prefix] and [postfix] if supplied. * * If the collection could be huge, you can specify a non-negative value of [limit], in which case only the first [limit] * elements will be appended, followed by the [truncated] string (which defaults to "..."). * * @sample samples.collections.Collections.Transformations.joinTo */ public fun ByteArray.joinTo(buffer: A, separator: CharSequence = ", ", prefix: CharSequence = "", postfix: CharSequence = "", limit: Int = -1, truncated: CharSequence = "...", transform: ((Byte) -> CharSequence)? = null): A { buffer.append(prefix) var count = 0 for (element in this) { if (++count > 1) buffer.append(separator) if (limit < 0 || count <= limit) { if (transform != null) buffer.append(transform(element)) else buffer.append(element.toString()) } else break } if (limit >= 0 && count > limit) buffer.append(truncated) buffer.append(postfix) return buffer } /** * Appends the string from all the elements separated using [separator] and using the given [prefix] and [postfix] if supplied. * * If the collection could be huge, you can specify a non-negative value of [limit], in which case only the first [limit] * elements will be appended, followed by the [truncated] string (which defaults to "..."). * * @sample samples.collections.Collections.Transformations.joinTo */ public fun ShortArray.joinTo(buffer: A, separator: CharSequence = ", ", prefix: CharSequence = "", postfix: CharSequence = "", limit: Int = -1, truncated: CharSequence = "...", transform: ((Short) -> CharSequence)? = null): A { buffer.append(prefix) var count = 0 for (element in this) { if (++count > 1) buffer.append(separator) if (limit < 0 || count <= limit) { if (transform != null) buffer.append(transform(element)) else buffer.append(element.toString()) } else break } if (limit >= 0 && count > limit) buffer.append(truncated) buffer.append(postfix) return buffer } /** * Appends the string from all the elements separated using [separator] and using the given [prefix] and [postfix] if supplied. * * If the collection could be huge, you can specify a non-negative value of [limit], in which case only the first [limit] * elements will be appended, followed by the [truncated] string (which defaults to "..."). * * @sample samples.collections.Collections.Transformations.joinTo */ public fun IntArray.joinTo(buffer: A, separator: CharSequence = ", ", prefix: CharSequence = "", postfix: CharSequence = "", limit: Int = -1, truncated: CharSequence = "...", transform: ((Int) -> CharSequence)? = null): A { buffer.append(prefix) var count = 0 for (element in this) { if (++count > 1) buffer.append(separator) if (limit < 0 || count <= limit) { if (transform != null) buffer.append(transform(element)) else buffer.append(element.toString()) } else break } if (limit >= 0 && count > limit) buffer.append(truncated) buffer.append(postfix) return buffer } /** * Appends the string from all the elements separated using [separator] and using the given [prefix] and [postfix] if supplied. * * If the collection could be huge, you can specify a non-negative value of [limit], in which case only the first [limit] * elements will be appended, followed by the [truncated] string (which defaults to "..."). * * @sample samples.collections.Collections.Transformations.joinTo */ public fun LongArray.joinTo(buffer: A, separator: CharSequence = ", ", prefix: CharSequence = "", postfix: CharSequence = "", limit: Int = -1, truncated: CharSequence = "...", transform: ((Long) -> CharSequence)? = null): A { buffer.append(prefix) var count = 0 for (element in this) { if (++count > 1) buffer.append(separator) if (limit < 0 || count <= limit) { if (transform != null) buffer.append(transform(element)) else buffer.append(element.toString()) } else break } if (limit >= 0 && count > limit) buffer.append(truncated) buffer.append(postfix) return buffer } /** * Appends the string from all the elements separated using [separator] and using the given [prefix] and [postfix] if supplied. * * If the collection could be huge, you can specify a non-negative value of [limit], in which case only the first [limit] * elements will be appended, followed by the [truncated] string (which defaults to "..."). * * @sample samples.collections.Collections.Transformations.joinTo */ public fun FloatArray.joinTo(buffer: A, separator: CharSequence = ", ", prefix: CharSequence = "", postfix: CharSequence = "", limit: Int = -1, truncated: CharSequence = "...", transform: ((Float) -> CharSequence)? = null): A { buffer.append(prefix) var count = 0 for (element in this) { if (++count > 1) buffer.append(separator) if (limit < 0 || count <= limit) { if (transform != null) buffer.append(transform(element)) else buffer.append(element.toString()) } else break } if (limit >= 0 && count > limit) buffer.append(truncated) buffer.append(postfix) return buffer } /** * Appends the string from all the elements separated using [separator] and using the given [prefix] and [postfix] if supplied. * * If the collection could be huge, you can specify a non-negative value of [limit], in which case only the first [limit] * elements will be appended, followed by the [truncated] string (which defaults to "..."). * * @sample samples.collections.Collections.Transformations.joinTo */ public fun DoubleArray.joinTo(buffer: A, separator: CharSequence = ", ", prefix: CharSequence = "", postfix: CharSequence = "", limit: Int = -1, truncated: CharSequence = "...", transform: ((Double) -> CharSequence)? = null): A { buffer.append(prefix) var count = 0 for (element in this) { if (++count > 1) buffer.append(separator) if (limit < 0 || count <= limit) { if (transform != null) buffer.append(transform(element)) else buffer.append(element.toString()) } else break } if (limit >= 0 && count > limit) buffer.append(truncated) buffer.append(postfix) return buffer } /** * Appends the string from all the elements separated using [separator] and using the given [prefix] and [postfix] if supplied. * * If the collection could be huge, you can specify a non-negative value of [limit], in which case only the first [limit] * elements will be appended, followed by the [truncated] string (which defaults to "..."). * * @sample samples.collections.Collections.Transformations.joinTo */ public fun BooleanArray.joinTo(buffer: A, separator: CharSequence = ", ", prefix: CharSequence = "", postfix: CharSequence = "", limit: Int = -1, truncated: CharSequence = "...", transform: ((Boolean) -> CharSequence)? = null): A { buffer.append(prefix) var count = 0 for (element in this) { if (++count > 1) buffer.append(separator) if (limit < 0 || count <= limit) { if (transform != null) buffer.append(transform(element)) else buffer.append(element.toString()) } else break } if (limit >= 0 && count > limit) buffer.append(truncated) buffer.append(postfix) return buffer } /** * Appends the string from all the elements separated using [separator] and using the given [prefix] and [postfix] if supplied. * * If the collection could be huge, you can specify a non-negative value of [limit], in which case only the first [limit] * elements will be appended, followed by the [truncated] string (which defaults to "..."). * * @sample samples.collections.Collections.Transformations.joinTo */ public fun CharArray.joinTo(buffer: A, separator: CharSequence = ", ", prefix: CharSequence = "", postfix: CharSequence = "", limit: Int = -1, truncated: CharSequence = "...", transform: ((Char) -> CharSequence)? = null): A { buffer.append(prefix) var count = 0 for (element in this) { if (++count > 1) buffer.append(separator) if (limit < 0 || count <= limit) { if (transform != null) buffer.append(transform(element)) else buffer.append(element) } else break } if (limit >= 0 && count > limit) buffer.append(truncated) buffer.append(postfix) return buffer } /** * Creates a string from all the elements separated using [separator] and using the given [prefix] and [postfix] if supplied. * * If the collection could be huge, you can specify a non-negative value of [limit], in which case only the first [limit] * elements will be appended, followed by the [truncated] string (which defaults to "..."). * * @sample samples.collections.Collections.Transformations.joinToString */ public fun Array.joinToString(separator: CharSequence = ", ", prefix: CharSequence = "", postfix: CharSequence = "", limit: Int = -1, truncated: CharSequence = "...", transform: ((T) -> CharSequence)? = null): String { return joinTo(StringBuilder(), separator, prefix, postfix, limit, truncated, transform).toString() } /** * Creates a string from all the elements separated using [separator] and using the given [prefix] and [postfix] if supplied. * * If the collection could be huge, you can specify a non-negative value of [limit], in which case only the first [limit] * elements will be appended, followed by the [truncated] string (which defaults to "..."). * * @sample samples.collections.Collections.Transformations.joinToString */ public fun ByteArray.joinToString(separator: CharSequence = ", ", prefix: CharSequence = "", postfix: CharSequence = "", limit: Int = -1, truncated: CharSequence = "...", transform: ((Byte) -> CharSequence)? = null): String { return joinTo(StringBuilder(), separator, prefix, postfix, limit, truncated, transform).toString() } /** * Creates a string from all the elements separated using [separator] and using the given [prefix] and [postfix] if supplied. * * If the collection could be huge, you can specify a non-negative value of [limit], in which case only the first [limit] * elements will be appended, followed by the [truncated] string (which defaults to "..."). * * @sample samples.collections.Collections.Transformations.joinToString */ public fun ShortArray.joinToString(separator: CharSequence = ", ", prefix: CharSequence = "", postfix: CharSequence = "", limit: Int = -1, truncated: CharSequence = "...", transform: ((Short) -> CharSequence)? = null): String { return joinTo(StringBuilder(), separator, prefix, postfix, limit, truncated, transform).toString() } /** * Creates a string from all the elements separated using [separator] and using the given [prefix] and [postfix] if supplied. * * If the collection could be huge, you can specify a non-negative value of [limit], in which case only the first [limit] * elements will be appended, followed by the [truncated] string (which defaults to "..."). * * @sample samples.collections.Collections.Transformations.joinToString */ public fun IntArray.joinToString(separator: CharSequence = ", ", prefix: CharSequence = "", postfix: CharSequence = "", limit: Int = -1, truncated: CharSequence = "...", transform: ((Int) -> CharSequence)? = null): String { return joinTo(StringBuilder(), separator, prefix, postfix, limit, truncated, transform).toString() } /** * Creates a string from all the elements separated using [separator] and using the given [prefix] and [postfix] if supplied. * * If the collection could be huge, you can specify a non-negative value of [limit], in which case only the first [limit] * elements will be appended, followed by the [truncated] string (which defaults to "..."). * * @sample samples.collections.Collections.Transformations.joinToString */ public fun LongArray.joinToString(separator: CharSequence = ", ", prefix: CharSequence = "", postfix: CharSequence = "", limit: Int = -1, truncated: CharSequence = "...", transform: ((Long) -> CharSequence)? = null): String { return joinTo(StringBuilder(), separator, prefix, postfix, limit, truncated, transform).toString() } /** * Creates a string from all the elements separated using [separator] and using the given [prefix] and [postfix] if supplied. * * If the collection could be huge, you can specify a non-negative value of [limit], in which case only the first [limit] * elements will be appended, followed by the [truncated] string (which defaults to "..."). * * @sample samples.collections.Collections.Transformations.joinToString */ public fun FloatArray.joinToString(separator: CharSequence = ", ", prefix: CharSequence = "", postfix: CharSequence = "", limit: Int = -1, truncated: CharSequence = "...", transform: ((Float) -> CharSequence)? = null): String { return joinTo(StringBuilder(), separator, prefix, postfix, limit, truncated, transform).toString() } /** * Creates a string from all the elements separated using [separator] and using the given [prefix] and [postfix] if supplied. * * If the collection could be huge, you can specify a non-negative value of [limit], in which case only the first [limit] * elements will be appended, followed by the [truncated] string (which defaults to "..."). * * @sample samples.collections.Collections.Transformations.joinToString */ public fun DoubleArray.joinToString(separator: CharSequence = ", ", prefix: CharSequence = "", postfix: CharSequence = "", limit: Int = -1, truncated: CharSequence = "...", transform: ((Double) -> CharSequence)? = null): String { return joinTo(StringBuilder(), separator, prefix, postfix, limit, truncated, transform).toString() } /** * Creates a string from all the elements separated using [separator] and using the given [prefix] and [postfix] if supplied. * * If the collection could be huge, you can specify a non-negative value of [limit], in which case only the first [limit] * elements will be appended, followed by the [truncated] string (which defaults to "..."). * * @sample samples.collections.Collections.Transformations.joinToString */ public fun BooleanArray.joinToString(separator: CharSequence = ", ", prefix: CharSequence = "", postfix: CharSequence = "", limit: Int = -1, truncated: CharSequence = "...", transform: ((Boolean) -> CharSequence)? = null): String { return joinTo(StringBuilder(), separator, prefix, postfix, limit, truncated, transform).toString() } /** * Creates a string from all the elements separated using [separator] and using the given [prefix] and [postfix] if supplied. * * If the collection could be huge, you can specify a non-negative value of [limit], in which case only the first [limit] * elements will be appended, followed by the [truncated] string (which defaults to "..."). * * @sample samples.collections.Collections.Transformations.joinToString */ public fun CharArray.joinToString(separator: CharSequence = ", ", prefix: CharSequence = "", postfix: CharSequence = "", limit: Int = -1, truncated: CharSequence = "...", transform: ((Char) -> CharSequence)? = null): String { return joinTo(StringBuilder(), separator, prefix, postfix, limit, truncated, transform).toString() } /** * Creates an [Iterable] instance that wraps the original array returning its elements when being iterated. */ public fun Array.asIterable(): Iterable { if (isEmpty()) return emptyList() return Iterable { this.iterator() } } /** * Creates an [Iterable] instance that wraps the original array returning its elements when being iterated. */ public fun ByteArray.asIterable(): Iterable { if (isEmpty()) return emptyList() return Iterable { this.iterator() } } /** * Creates an [Iterable] instance that wraps the original array returning its elements when being iterated. */ public fun ShortArray.asIterable(): Iterable { if (isEmpty()) return emptyList() return Iterable { this.iterator() } } /** * Creates an [Iterable] instance that wraps the original array returning its elements when being iterated. */ public fun IntArray.asIterable(): Iterable { if (isEmpty()) return emptyList() return Iterable { this.iterator() } } /** * Creates an [Iterable] instance that wraps the original array returning its elements when being iterated. */ public fun LongArray.asIterable(): Iterable { if (isEmpty()) return emptyList() return Iterable { this.iterator() } } /** * Creates an [Iterable] instance that wraps the original array returning its elements when being iterated. */ public fun FloatArray.asIterable(): Iterable { if (isEmpty()) return emptyList() return Iterable { this.iterator() } } /** * Creates an [Iterable] instance that wraps the original array returning its elements when being iterated. */ public fun DoubleArray.asIterable(): Iterable { if (isEmpty()) return emptyList() return Iterable { this.iterator() } } /** * Creates an [Iterable] instance that wraps the original array returning its elements when being iterated. */ public fun BooleanArray.asIterable(): Iterable { if (isEmpty()) return emptyList() return Iterable { this.iterator() } } /** * Creates an [Iterable] instance that wraps the original array returning its elements when being iterated. */ public fun CharArray.asIterable(): Iterable { if (isEmpty()) return emptyList() return Iterable { this.iterator() } } /** * Creates a [Sequence] instance that wraps the original array returning its elements when being iterated. * * @sample samples.collections.Sequences.Building.sequenceFromArray */ public fun Array.asSequence(): Sequence { if (isEmpty()) return emptySequence() return Sequence { this.iterator() } } /** * Creates a [Sequence] instance that wraps the original array returning its elements when being iterated. * * @sample samples.collections.Sequences.Building.sequenceFromArray */ public fun ByteArray.asSequence(): Sequence { if (isEmpty()) return emptySequence() return Sequence { this.iterator() } } /** * Creates a [Sequence] instance that wraps the original array returning its elements when being iterated. * * @sample samples.collections.Sequences.Building.sequenceFromArray */ public fun ShortArray.asSequence(): Sequence { if (isEmpty()) return emptySequence() return Sequence { this.iterator() } } /** * Creates a [Sequence] instance that wraps the original array returning its elements when being iterated. * * @sample samples.collections.Sequences.Building.sequenceFromArray */ public fun IntArray.asSequence(): Sequence { if (isEmpty()) return emptySequence() return Sequence { this.iterator() } } /** * Creates a [Sequence] instance that wraps the original array returning its elements when being iterated. * * @sample samples.collections.Sequences.Building.sequenceFromArray */ public fun LongArray.asSequence(): Sequence { if (isEmpty()) return emptySequence() return Sequence { this.iterator() } } /** * Creates a [Sequence] instance that wraps the original array returning its elements when being iterated. * * @sample samples.collections.Sequences.Building.sequenceFromArray */ public fun FloatArray.asSequence(): Sequence { if (isEmpty()) return emptySequence() return Sequence { this.iterator() } } /** * Creates a [Sequence] instance that wraps the original array returning its elements when being iterated. * * @sample samples.collections.Sequences.Building.sequenceFromArray */ public fun DoubleArray.asSequence(): Sequence { if (isEmpty()) return emptySequence() return Sequence { this.iterator() } } /** * Creates a [Sequence] instance that wraps the original array returning its elements when being iterated. * * @sample samples.collections.Sequences.Building.sequenceFromArray */ public fun BooleanArray.asSequence(): Sequence { if (isEmpty()) return emptySequence() return Sequence { this.iterator() } } /** * Creates a [Sequence] instance that wraps the original array returning its elements when being iterated. * * @sample samples.collections.Sequences.Building.sequenceFromArray */ public fun CharArray.asSequence(): Sequence { if (isEmpty()) return emptySequence() return Sequence { this.iterator() } } /** * Returns an average value of elements in the array. */ @kotlin.jvm.JvmName("averageOfByte") public fun Array.average(): Double { var sum: Double = 0.0 var count: Int = 0 for (element in this) { sum += element ++count } return if (count == 0) Double.NaN else sum / count } /** * Returns an average value of elements in the array. */ @kotlin.jvm.JvmName("averageOfShort") public fun Array.average(): Double { var sum: Double = 0.0 var count: Int = 0 for (element in this) { sum += element ++count } return if (count == 0) Double.NaN else sum / count } /** * Returns an average value of elements in the array. */ @kotlin.jvm.JvmName("averageOfInt") public fun Array.average(): Double { var sum: Double = 0.0 var count: Int = 0 for (element in this) { sum += element ++count } return if (count == 0) Double.NaN else sum / count } /** * Returns an average value of elements in the array. */ @kotlin.jvm.JvmName("averageOfLong") public fun Array.average(): Double { var sum: Double = 0.0 var count: Int = 0 for (element in this) { sum += element ++count } return if (count == 0) Double.NaN else sum / count } /** * Returns an average value of elements in the array. */ @kotlin.jvm.JvmName("averageOfFloat") public fun Array.average(): Double { var sum: Double = 0.0 var count: Int = 0 for (element in this) { sum += element ++count } return if (count == 0) Double.NaN else sum / count } /** * Returns an average value of elements in the array. */ @kotlin.jvm.JvmName("averageOfDouble") public fun Array.average(): Double { var sum: Double = 0.0 var count: Int = 0 for (element in this) { sum += element ++count } return if (count == 0) Double.NaN else sum / count } /** * Returns an average value of elements in the array. */ public fun ByteArray.average(): Double { var sum: Double = 0.0 var count: Int = 0 for (element in this) { sum += element ++count } return if (count == 0) Double.NaN else sum / count } /** * Returns an average value of elements in the array. */ public fun ShortArray.average(): Double { var sum: Double = 0.0 var count: Int = 0 for (element in this) { sum += element ++count } return if (count == 0) Double.NaN else sum / count } /** * Returns an average value of elements in the array. */ public fun IntArray.average(): Double { var sum: Double = 0.0 var count: Int = 0 for (element in this) { sum += element ++count } return if (count == 0) Double.NaN else sum / count } /** * Returns an average value of elements in the array. */ public fun LongArray.average(): Double { var sum: Double = 0.0 var count: Int = 0 for (element in this) { sum += element ++count } return if (count == 0) Double.NaN else sum / count } /** * Returns an average value of elements in the array. */ public fun FloatArray.average(): Double { var sum: Double = 0.0 var count: Int = 0 for (element in this) { sum += element ++count } return if (count == 0) Double.NaN else sum / count } /** * Returns an average value of elements in the array. */ public fun DoubleArray.average(): Double { var sum: Double = 0.0 var count: Int = 0 for (element in this) { sum += element ++count } return if (count == 0) Double.NaN else sum / count } /** * Returns the sum of all elements in the array. */ @kotlin.jvm.JvmName("sumOfByte") public fun Array.sum(): Int { var sum: Int = 0 for (element in this) { sum += element } return sum } /** * Returns the sum of all elements in the array. */ @kotlin.jvm.JvmName("sumOfShort") public fun Array.sum(): Int { var sum: Int = 0 for (element in this) { sum += element } return sum } /** * Returns the sum of all elements in the array. */ @kotlin.jvm.JvmName("sumOfInt") public fun Array.sum(): Int { var sum: Int = 0 for (element in this) { sum += element } return sum } /** * Returns the sum of all elements in the array. */ @kotlin.jvm.JvmName("sumOfLong") public fun Array.sum(): Long { var sum: Long = 0L for (element in this) { sum += element } return sum } /** * Returns the sum of all elements in the array. */ @kotlin.jvm.JvmName("sumOfFloat") public fun Array.sum(): Float { var sum: Float = 0.0f for (element in this) { sum += element } return sum } /** * Returns the sum of all elements in the array. */ @kotlin.jvm.JvmName("sumOfDouble") public fun Array.sum(): Double { var sum: Double = 0.0 for (element in this) { sum += element } return sum } /** * Returns the sum of all elements in the array. */ public fun ByteArray.sum(): Int { var sum: Int = 0 for (element in this) { sum += element } return sum } /** * Returns the sum of all elements in the array. */ public fun ShortArray.sum(): Int { var sum: Int = 0 for (element in this) { sum += element } return sum } /** * Returns the sum of all elements in the array. */ public fun IntArray.sum(): Int { var sum: Int = 0 for (element in this) { sum += element } return sum } /** * Returns the sum of all elements in the array. */ public fun LongArray.sum(): Long { var sum: Long = 0L for (element in this) { sum += element } return sum } /** * Returns the sum of all elements in the array. */ public fun FloatArray.sum(): Float { var sum: Float = 0.0f for (element in this) { sum += element } return sum } /** * Returns the sum of all elements in the array. */ public fun DoubleArray.sum(): Double { var sum: Double = 0.0 for (element in this) { sum += element } return sum }