@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.comparisons.* /** * Returns 1st *element* from the collection. */ @kotlin.internal.InlineOnly public inline operator fun Array.component1(): T { return get(0) } /** * Returns 1st *element* from the collection. */ @kotlin.internal.InlineOnly public inline operator fun ByteArray.component1(): Byte { return get(0) } /** * Returns 1st *element* from the collection. */ @kotlin.internal.InlineOnly public inline operator fun ShortArray.component1(): Short { return get(0) } /** * Returns 1st *element* from the collection. */ @kotlin.internal.InlineOnly public inline operator fun IntArray.component1(): Int { return get(0) } /** * Returns 1st *element* from the collection. */ @kotlin.internal.InlineOnly public inline operator fun LongArray.component1(): Long { return get(0) } /** * Returns 1st *element* from the collection. */ @kotlin.internal.InlineOnly public inline operator fun FloatArray.component1(): Float { return get(0) } /** * Returns 1st *element* from the collection. */ @kotlin.internal.InlineOnly public inline operator fun DoubleArray.component1(): Double { return get(0) } /** * Returns 1st *element* from the collection. */ @kotlin.internal.InlineOnly public inline operator fun BooleanArray.component1(): Boolean { return get(0) } /** * Returns 1st *element* from the collection. */ @kotlin.internal.InlineOnly public inline operator fun CharArray.component1(): Char { return get(0) } /** * Returns 2nd *element* from the collection. */ @kotlin.internal.InlineOnly public inline operator fun Array.component2(): T { return get(1) } /** * Returns 2nd *element* from the collection. */ @kotlin.internal.InlineOnly public inline operator fun ByteArray.component2(): Byte { return get(1) } /** * Returns 2nd *element* from the collection. */ @kotlin.internal.InlineOnly public inline operator fun ShortArray.component2(): Short { return get(1) } /** * Returns 2nd *element* from the collection. */ @kotlin.internal.InlineOnly public inline operator fun IntArray.component2(): Int { return get(1) } /** * Returns 2nd *element* from the collection. */ @kotlin.internal.InlineOnly public inline operator fun LongArray.component2(): Long { return get(1) } /** * Returns 2nd *element* from the collection. */ @kotlin.internal.InlineOnly public inline operator fun FloatArray.component2(): Float { return get(1) } /** * Returns 2nd *element* from the collection. */ @kotlin.internal.InlineOnly public inline operator fun DoubleArray.component2(): Double { return get(1) } /** * Returns 2nd *element* from the collection. */ @kotlin.internal.InlineOnly public inline operator fun BooleanArray.component2(): Boolean { return get(1) } /** * Returns 2nd *element* from the collection. */ @kotlin.internal.InlineOnly public inline operator fun CharArray.component2(): Char { return get(1) } /** * Returns 3rd *element* from the collection. */ @kotlin.internal.InlineOnly public inline operator fun Array.component3(): T { return get(2) } /** * Returns 3rd *element* from the collection. */ @kotlin.internal.InlineOnly public inline operator fun ByteArray.component3(): Byte { return get(2) } /** * Returns 3rd *element* from the collection. */ @kotlin.internal.InlineOnly public inline operator fun ShortArray.component3(): Short { return get(2) } /** * Returns 3rd *element* from the collection. */ @kotlin.internal.InlineOnly public inline operator fun IntArray.component3(): Int { return get(2) } /** * Returns 3rd *element* from the collection. */ @kotlin.internal.InlineOnly public inline operator fun LongArray.component3(): Long { return get(2) } /** * Returns 3rd *element* from the collection. */ @kotlin.internal.InlineOnly public inline operator fun FloatArray.component3(): Float { return get(2) } /** * Returns 3rd *element* from the collection. */ @kotlin.internal.InlineOnly public inline operator fun DoubleArray.component3(): Double { return get(2) } /** * Returns 3rd *element* from the collection. */ @kotlin.internal.InlineOnly public inline operator fun BooleanArray.component3(): Boolean { return get(2) } /** * Returns 3rd *element* from the collection. */ @kotlin.internal.InlineOnly public inline operator fun CharArray.component3(): Char { return get(2) } /** * Returns 4th *element* from the collection. */ @kotlin.internal.InlineOnly public inline operator fun Array.component4(): T { return get(3) } /** * Returns 4th *element* from the collection. */ @kotlin.internal.InlineOnly public inline operator fun ByteArray.component4(): Byte { return get(3) } /** * Returns 4th *element* from the collection. */ @kotlin.internal.InlineOnly public inline operator fun ShortArray.component4(): Short { return get(3) } /** * Returns 4th *element* from the collection. */ @kotlin.internal.InlineOnly public inline operator fun IntArray.component4(): Int { return get(3) } /** * Returns 4th *element* from the collection. */ @kotlin.internal.InlineOnly public inline operator fun LongArray.component4(): Long { return get(3) } /** * Returns 4th *element* from the collection. */ @kotlin.internal.InlineOnly public inline operator fun FloatArray.component4(): Float { return get(3) } /** * Returns 4th *element* from the collection. */ @kotlin.internal.InlineOnly public inline operator fun DoubleArray.component4(): Double { return get(3) } /** * Returns 4th *element* from the collection. */ @kotlin.internal.InlineOnly public inline operator fun BooleanArray.component4(): Boolean { return get(3) } /** * Returns 4th *element* from the collection. */ @kotlin.internal.InlineOnly public inline operator fun CharArray.component4(): Char { return get(3) } /** * Returns 5th *element* from the collection. */ @kotlin.internal.InlineOnly public inline operator fun Array.component5(): T { return get(4) } /** * Returns 5th *element* from the collection. */ @kotlin.internal.InlineOnly public inline operator fun ByteArray.component5(): Byte { return get(4) } /** * Returns 5th *element* from the collection. */ @kotlin.internal.InlineOnly public inline operator fun ShortArray.component5(): Short { return get(4) } /** * Returns 5th *element* from the collection. */ @kotlin.internal.InlineOnly public inline operator fun IntArray.component5(): Int { return get(4) } /** * Returns 5th *element* from the collection. */ @kotlin.internal.InlineOnly public inline operator fun LongArray.component5(): Long { return get(4) } /** * Returns 5th *element* from the collection. */ @kotlin.internal.InlineOnly public inline operator fun FloatArray.component5(): Float { return get(4) } /** * Returns 5th *element* from the collection. */ @kotlin.internal.InlineOnly public inline operator fun DoubleArray.component5(): Double { return get(4) } /** * Returns 5th *element* from the collection. */ @kotlin.internal.InlineOnly public inline operator fun BooleanArray.component5(): Boolean { return get(4) } /** * Returns 5th *element* from the collection. */ @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. */ public operator fun FloatArray.contains(element: Float): Boolean { return indexOf(element) >= 0 } /** * Returns `true` if [element] is found in the array. */ public operator fun DoubleArray.contains(element: Double): Boolean { return indexOf(element) >= 0 } /** * 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. */ @kotlin.internal.InlineOnly public inline fun Array.elementAt(index: Int): T { return get(index) } /** * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this array. */ @kotlin.internal.InlineOnly public inline fun ByteArray.elementAt(index: Int): Byte { return get(index) } /** * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this array. */ @kotlin.internal.InlineOnly public inline fun ShortArray.elementAt(index: Int): Short { return get(index) } /** * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this array. */ @kotlin.internal.InlineOnly public inline fun IntArray.elementAt(index: Int): Int { return get(index) } /** * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this array. */ @kotlin.internal.InlineOnly public inline fun LongArray.elementAt(index: Int): Long { return get(index) } /** * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this array. */ @kotlin.internal.InlineOnly public inline fun FloatArray.elementAt(index: Int): Float { return get(index) } /** * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this array. */ @kotlin.internal.InlineOnly public inline fun DoubleArray.elementAt(index: Int): Double { return get(index) } /** * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this array. */ @kotlin.internal.InlineOnly public inline fun BooleanArray.elementAt(index: Int): Boolean { return get(index) } /** * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this array. */ @kotlin.internal.InlineOnly public inline fun CharArray.elementAt(index: Int): Char { return get(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 Array.elementAtOrElse(index: Int, defaultValue: (Int) -> T): T { return if (index >= 0 && index <= lastIndex) 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.elementAtOrElse(index: Int, defaultValue: (Int) -> Byte): Byte { return if (index >= 0 && index <= lastIndex) 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.elementAtOrElse(index: Int, defaultValue: (Int) -> Short): Short { return if (index >= 0 && index <= lastIndex) 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.elementAtOrElse(index: Int, defaultValue: (Int) -> Int): Int { return if (index >= 0 && index <= lastIndex) 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.elementAtOrElse(index: Int, defaultValue: (Int) -> Long): Long { return if (index >= 0 && index <= lastIndex) 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.elementAtOrElse(index: Int, defaultValue: (Int) -> Float): Float { return if (index >= 0 && index <= lastIndex) 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.elementAtOrElse(index: Int, defaultValue: (Int) -> Double): Double { return if (index >= 0 && index <= lastIndex) 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.elementAtOrElse(index: Int, defaultValue: (Int) -> Boolean): Boolean { return if (index >= 0 && index <= lastIndex) 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.elementAtOrElse(index: Int, defaultValue: (Int) -> Char): Char { return if (index >= 0 && index <= lastIndex) get(index) else defaultValue(index) } /** * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array. */ @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. */ @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. */ @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. */ @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. */ @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. */ @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. */ @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. */ @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. */ @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. */ @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. */ @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. */ @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. */ @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. */ @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. */ @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. */ @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. */ @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. */ @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. */ @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. */ @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. */ @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. */ @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. */ @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. */ @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. */ @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. */ @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. */ @kotlin.internal.InlineOnly public inline fun CharArray.findLast(predicate: (Char) -> Boolean): Char? { return lastOrNull(predicate) } /** * Returns 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 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 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 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 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 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 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 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 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 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 { return if (index >= 0 && index <= lastIndex) 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 { return if (index >= 0 && index <= lastIndex) 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 { return if (index >= 0 && index <= lastIndex) 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 { return if (index >= 0 && index <= lastIndex) 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 { return if (index >= 0 && index <= lastIndex) 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 { return if (index >= 0 && index <= lastIndex) 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 { return if (index >= 0 && index <= lastIndex) 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 { return if (index >= 0 && index <= lastIndex) 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 { return if (index >= 0 && index <= lastIndex) get(index) else defaultValue(index) } /** * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array. */ public fun Array.getOrNull(index: Int): T? { return if (index >= 0 && index <= lastIndex) get(index) else null } /** * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array. */ public fun ByteArray.getOrNull(index: Int): Byte? { return if (index >= 0 && index <= lastIndex) get(index) else null } /** * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array. */ public fun ShortArray.getOrNull(index: Int): Short? { return if (index >= 0 && index <= lastIndex) get(index) else null } /** * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array. */ public fun IntArray.getOrNull(index: Int): Int? { return if (index >= 0 && index <= lastIndex) get(index) else null } /** * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array. */ public fun LongArray.getOrNull(index: Int): Long? { return if (index >= 0 && index <= lastIndex) get(index) else null } /** * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array. */ public fun FloatArray.getOrNull(index: Int): Float? { return if (index >= 0 && index <= lastIndex) get(index) else null } /** * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array. */ public fun DoubleArray.getOrNull(index: Int): Double? { return if (index >= 0 && index <= lastIndex) get(index) else null } /** * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array. */ public fun BooleanArray.getOrNull(index: Int): Boolean? { return if (index >= 0 && index <= lastIndex) get(index) else null } /** * Returns an element at the given [index] or `null` if the [index] is out of bounds of this array. */ public fun CharArray.getOrNull(index: Int): Char? { return if (index >= 0 && index <= lastIndex) 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. */ 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. */ 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. */ 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. */ 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. */ 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. */ 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. */ 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. */ 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. */ 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. */ 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. */ 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. */ 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. */ 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. */ 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. */ 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. */ 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. */ 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. */ 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. */ 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. */ 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. */ 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. */ 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. */ public fun Array.lastOrNull(): T? { return if (isEmpty()) null else this[size - 1] } /** * Returns the last element, or `null` if the array is empty. */ public fun ByteArray.lastOrNull(): Byte? { return if (isEmpty()) null else this[size - 1] } /** * Returns the last element, or `null` if the array is empty. */ public fun ShortArray.lastOrNull(): Short? { return if (isEmpty()) null else this[size - 1] } /** * Returns the last element, or `null` if the array is empty. */ public fun IntArray.lastOrNull(): Int? { return if (isEmpty()) null else this[size - 1] } /** * Returns the last element, or `null` if the array is empty. */ public fun LongArray.lastOrNull(): Long? { return if (isEmpty()) null else this[size - 1] } /** * Returns the last element, or `null` if the array is empty. */ public fun FloatArray.lastOrNull(): Float? { return if (isEmpty()) null else this[size - 1] } /** * Returns the last element, or `null` if the array is empty. */ public fun DoubleArray.lastOrNull(): Double? { return if (isEmpty()) null else this[size - 1] } /** * Returns the last element, or `null` if the array is empty. */ public fun BooleanArray.lastOrNull(): Boolean? { return if (isEmpty()) null else this[size - 1] } /** * Returns the last element, or `null` if the array is empty. */ 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. */ 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. */ 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. */ 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. */ 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. */ 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. */ 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. */ 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. */ 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. */ 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 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.") 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.") 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.") 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.") 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.") 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.") 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.") 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.") 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.") 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. */ 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. */ 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. */ 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. */ 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. */ 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. */ 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. */ 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. */ 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. */ 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. */ 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. */ 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. */ 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. */ 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. */ 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. */ 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. */ 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. */ 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. */ 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]. */ 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]. */ 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]. */ 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]. */ 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]. */ 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]. */ 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]. */ 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]. */ 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]. */ 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]. */ 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]. */ 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]. */ 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]. */ 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]. */ 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]. */ 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]. */ 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]. */ 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]. */ 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]. */ public inline fun Array.filter(predicate: (T) -> Boolean): List { return filterTo(ArrayList(), predicate) } /** * Returns a list containing only elements matching the given [predicate]. */ public inline fun ByteArray.filter(predicate: (Byte) -> Boolean): List { return filterTo(ArrayList(), predicate) } /** * Returns a list containing only elements matching the given [predicate]. */ public inline fun ShortArray.filter(predicate: (Short) -> Boolean): List { return filterTo(ArrayList(), predicate) } /** * Returns a list containing only elements matching the given [predicate]. */ public inline fun IntArray.filter(predicate: (Int) -> Boolean): List { return filterTo(ArrayList(), predicate) } /** * Returns a list containing only elements matching the given [predicate]. */ public inline fun LongArray.filter(predicate: (Long) -> Boolean): List { return filterTo(ArrayList(), predicate) } /** * Returns a list containing only elements matching the given [predicate]. */ public inline fun FloatArray.filter(predicate: (Float) -> Boolean): List { return filterTo(ArrayList(), predicate) } /** * Returns a list containing only elements matching the given [predicate]. */ public inline fun DoubleArray.filter(predicate: (Double) -> Boolean): List { return filterTo(ArrayList(), predicate) } /** * Returns a list containing only elements matching the given [predicate]. */ public inline fun BooleanArray.filter(predicate: (Boolean) -> Boolean): List { return filterTo(ArrayList(), predicate) } /** * Returns a list containing only elements matching the given [predicate]. */ 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. */ public inline fun Array.filterIndexed(predicate: (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. */ public inline fun ByteArray.filterIndexed(predicate: (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. */ public inline fun ShortArray.filterIndexed(predicate: (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. */ public inline fun IntArray.filterIndexed(predicate: (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. */ public inline fun LongArray.filterIndexed(predicate: (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. */ public inline fun FloatArray.filterIndexed(predicate: (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. */ public inline fun DoubleArray.filterIndexed(predicate: (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. */ public inline fun BooleanArray.filterIndexed(predicate: (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. */ public inline fun CharArray.filterIndexed(predicate: (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. */ public inline fun > Array.filterIndexedTo(destination: C, predicate: (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. */ public inline fun > ByteArray.filterIndexedTo(destination: C, predicate: (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. */ public inline fun > ShortArray.filterIndexedTo(destination: C, predicate: (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. */ public inline fun > IntArray.filterIndexedTo(destination: C, predicate: (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. */ public inline fun > LongArray.filterIndexedTo(destination: C, predicate: (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. */ public inline fun > FloatArray.filterIndexedTo(destination: C, predicate: (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. */ public inline fun > DoubleArray.filterIndexedTo(destination: C, predicate: (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. */ public inline fun > BooleanArray.filterIndexedTo(destination: C, predicate: (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. */ public inline fun > CharArray.filterIndexedTo(destination: C, predicate: (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. */ 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]. */ 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]. */ public inline fun Array.filterNot(predicate: (T) -> Boolean): List { return filterNotTo(ArrayList(), predicate) } /** * Returns a list containing all elements not matching the given [predicate]. */ public inline fun ByteArray.filterNot(predicate: (Byte) -> Boolean): List { return filterNotTo(ArrayList(), predicate) } /** * Returns a list containing all elements not matching the given [predicate]. */ public inline fun ShortArray.filterNot(predicate: (Short) -> Boolean): List { return filterNotTo(ArrayList(), predicate) } /** * Returns a list containing all elements not matching the given [predicate]. */ public inline fun IntArray.filterNot(predicate: (Int) -> Boolean): List { return filterNotTo(ArrayList(), predicate) } /** * Returns a list containing all elements not matching the given [predicate]. */ public inline fun LongArray.filterNot(predicate: (Long) -> Boolean): List { return filterNotTo(ArrayList(), predicate) } /** * Returns a list containing all elements not matching the given [predicate]. */ public inline fun FloatArray.filterNot(predicate: (Float) -> Boolean): List { return filterNotTo(ArrayList(), predicate) } /** * Returns a list containing all elements not matching the given [predicate]. */ public inline fun DoubleArray.filterNot(predicate: (Double) -> Boolean): List { return filterNotTo(ArrayList(), predicate) } /** * Returns a list containing all elements not matching the given [predicate]. */ public inline fun BooleanArray.filterNot(predicate: (Boolean) -> Boolean): List { return filterNotTo(ArrayList(), predicate) } /** * Returns a list containing all elements not matching the given [predicate]. */ public inline fun CharArray.filterNot(predicate: (Char) -> Boolean): List { return filterNotTo(ArrayList(), predicate) } /** * Returns a list containing all elements that are not `null`. */ public fun Array.filterNotNull(): List { return filterNotNullTo(ArrayList()) } /** * Appends all elements that are not `null` to the given [destination]. */ 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]. */ 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]. */ 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]. */ 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]. */ 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]. */ 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]. */ 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]. */ 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]. */ 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]. */ 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]. */ 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]. */ 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]. */ 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]. */ 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]. */ 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]. */ 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]. */ 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]. */ 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]. */ 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 a list 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 a list 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 a list 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 a list 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 a list 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 a list 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 a list 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 a list 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 a list 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. */ 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) { if (count++ == n) break list.add(item) } return list } /** * Returns a list containing first [n] elements. */ 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) { if (count++ == n) break list.add(item) } return list } /** * Returns a list containing first [n] elements. */ 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) { if (count++ == n) break list.add(item) } return list } /** * Returns a list containing first [n] elements. */ 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) { if (count++ == n) break list.add(item) } return list } /** * Returns a list containing first [n] elements. */ 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) { if (count++ == n) break list.add(item) } return list } /** * Returns a list containing first [n] elements. */ 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) { if (count++ == n) break list.add(item) } return list } /** * Returns a list containing first [n] elements. */ 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) { if (count++ == n) break list.add(item) } return list } /** * Returns a list containing first [n] elements. */ 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) { if (count++ == n) break list.add(item) } return list } /** * Returns a list containing first [n] elements. */ 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) { if (count++ == n) break list.add(item) } return list } /** * Returns a list containing last [n] elements. */ 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 .. size - 1) list.add(this[index]) return list } /** * Returns a list containing last [n] elements. */ 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 .. size - 1) list.add(this[index]) return list } /** * Returns a list containing last [n] elements. */ 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 .. size - 1) list.add(this[index]) return list } /** * Returns a list containing last [n] elements. */ 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 .. size - 1) list.add(this[index]) return list } /** * Returns a list containing last [n] elements. */ 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 .. size - 1) list.add(this[index]) return list } /** * Returns a list containing last [n] elements. */ 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 .. size - 1) list.add(this[index]) return list } /** * Returns a list containing last [n] elements. */ 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 .. size - 1) list.add(this[index]) return list } /** * Returns a list containing last [n] elements. */ 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 .. size - 1) list.add(this[index]) return list } /** * Returns a list containing last [n] elements. */ 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 .. size - 1) list.add(this[index]) return list } /** * Returns a list containing last elements satisfying the given [predicate]. */ 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]. */ 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]. */ 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]. */ 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]. */ 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]. */ 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]. */ 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]. */ 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]. */ 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]. */ 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]. */ 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]. */ 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]. */ 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]. */ 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]. */ 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]. */ 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]. */ 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]. */ 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-- } } /** * 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 } /** * Sorts elements in the array in-place according to natural sort order of the value returned by specified [selector] function. */ 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. */ 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. */ 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. */ 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. */ 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. */ 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]. */ 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. */ 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. */ 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. */ 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. */ 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. */ 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. */ 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. */ 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. */ 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. */ 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. */ 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. */ 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. */ 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. */ 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. */ 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. */ 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. */ 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. */ 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. */ 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. */ 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]. */ 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 `true` if the two specified arrays are *deeply* equal to one another, * i.e. contain the same number of the same elements in the same order. * * If two corresponding elements are nested arrays, they are also compared deeply. * If any of arrays contains itself on any nesting level the behavior is undefined. */ @kotlin.jvm.JvmVersion @SinceKotlin("1.1") @kotlin.internal.InlineOnly public inline infix fun Array.contentDeepEquals(other: Array): Boolean { return java.util.Arrays.deepEquals(this, other) } /** * 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. */ @kotlin.jvm.JvmVersion @SinceKotlin("1.1") @kotlin.internal.InlineOnly public inline fun Array.contentDeepHashCode(): Int { return java.util.Arrays.deepHashCode(this) } /** * 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. */ @kotlin.jvm.JvmVersion @SinceKotlin("1.1") @kotlin.internal.InlineOnly public inline fun Array.contentDeepToString(): String { return java.util.Arrays.deepToString(this) } /** * Returns `true` if the two specified arrays are *structurally* equal to one another, * i.e. contain the same number of the same elements in the same order. */ @kotlin.jvm.JvmVersion @SinceKotlin("1.1") @kotlin.internal.InlineOnly public inline infix fun Array.contentEquals(other: Array): Boolean { return java.util.Arrays.equals(this, other) } /** * Returns `true` if the two specified arrays are *structurally* equal to one another, * i.e. contain the same number of the same elements in the same order. */ @kotlin.jvm.JvmVersion @SinceKotlin("1.1") @kotlin.internal.InlineOnly public inline infix fun ByteArray.contentEquals(other: ByteArray): Boolean { return java.util.Arrays.equals(this, other) } /** * Returns `true` if the two specified arrays are *structurally* equal to one another, * i.e. contain the same number of the same elements in the same order. */ @kotlin.jvm.JvmVersion @SinceKotlin("1.1") @kotlin.internal.InlineOnly public inline infix fun ShortArray.contentEquals(other: ShortArray): Boolean { return java.util.Arrays.equals(this, other) } /** * Returns `true` if the two specified arrays are *structurally* equal to one another, * i.e. contain the same number of the same elements in the same order. */ @kotlin.jvm.JvmVersion @SinceKotlin("1.1") @kotlin.internal.InlineOnly public inline infix fun IntArray.contentEquals(other: IntArray): Boolean { return java.util.Arrays.equals(this, other) } /** * Returns `true` if the two specified arrays are *structurally* equal to one another, * i.e. contain the same number of the same elements in the same order. */ @kotlin.jvm.JvmVersion @SinceKotlin("1.1") @kotlin.internal.InlineOnly public inline infix fun LongArray.contentEquals(other: LongArray): Boolean { return java.util.Arrays.equals(this, other) } /** * Returns `true` if the two specified arrays are *structurally* equal to one another, * i.e. contain the same number of the same elements in the same order. */ @kotlin.jvm.JvmVersion @SinceKotlin("1.1") @kotlin.internal.InlineOnly public inline infix fun FloatArray.contentEquals(other: FloatArray): Boolean { return java.util.Arrays.equals(this, other) } /** * Returns `true` if the two specified arrays are *structurally* equal to one another, * i.e. contain the same number of the same elements in the same order. */ @kotlin.jvm.JvmVersion @SinceKotlin("1.1") @kotlin.internal.InlineOnly public inline infix fun DoubleArray.contentEquals(other: DoubleArray): Boolean { return java.util.Arrays.equals(this, other) } /** * Returns `true` if the two specified arrays are *structurally* equal to one another, * i.e. contain the same number of the same elements in the same order. */ @kotlin.jvm.JvmVersion @SinceKotlin("1.1") @kotlin.internal.InlineOnly public inline infix fun BooleanArray.contentEquals(other: BooleanArray): Boolean { return java.util.Arrays.equals(this, other) } /** * Returns `true` if the two specified arrays are *structurally* equal to one another, * i.e. contain the same number of the same elements in the same order. */ @kotlin.jvm.JvmVersion @SinceKotlin("1.1") @kotlin.internal.InlineOnly public inline infix fun CharArray.contentEquals(other: CharArray): Boolean { return java.util.Arrays.equals(this, other) } /** * Returns a hash code based on the contents of this array as if it is [List]. */ @kotlin.jvm.JvmVersion @SinceKotlin("1.1") @kotlin.internal.InlineOnly public inline fun Array.contentHashCode(): Int { return java.util.Arrays.hashCode(this) } /** * Returns a hash code based on the contents of this array as if it is [List]. */ @kotlin.jvm.JvmVersion @SinceKotlin("1.1") @kotlin.internal.InlineOnly public inline fun ByteArray.contentHashCode(): Int { return java.util.Arrays.hashCode(this) } /** * Returns a hash code based on the contents of this array as if it is [List]. */ @kotlin.jvm.JvmVersion @SinceKotlin("1.1") @kotlin.internal.InlineOnly public inline fun ShortArray.contentHashCode(): Int { return java.util.Arrays.hashCode(this) } /** * Returns a hash code based on the contents of this array as if it is [List]. */ @kotlin.jvm.JvmVersion @SinceKotlin("1.1") @kotlin.internal.InlineOnly public inline fun IntArray.contentHashCode(): Int { return java.util.Arrays.hashCode(this) } /** * Returns a hash code based on the contents of this array as if it is [List]. */ @kotlin.jvm.JvmVersion @SinceKotlin("1.1") @kotlin.internal.InlineOnly public inline fun LongArray.contentHashCode(): Int { return java.util.Arrays.hashCode(this) } /** * Returns a hash code based on the contents of this array as if it is [List]. */ @kotlin.jvm.JvmVersion @SinceKotlin("1.1") @kotlin.internal.InlineOnly public inline fun FloatArray.contentHashCode(): Int { return java.util.Arrays.hashCode(this) } /** * Returns a hash code based on the contents of this array as if it is [List]. */ @kotlin.jvm.JvmVersion @SinceKotlin("1.1") @kotlin.internal.InlineOnly public inline fun DoubleArray.contentHashCode(): Int { return java.util.Arrays.hashCode(this) } /** * Returns a hash code based on the contents of this array as if it is [List]. */ @kotlin.jvm.JvmVersion @SinceKotlin("1.1") @kotlin.internal.InlineOnly public inline fun BooleanArray.contentHashCode(): Int { return java.util.Arrays.hashCode(this) } /** * Returns a hash code based on the contents of this array as if it is [List]. */ @kotlin.jvm.JvmVersion @SinceKotlin("1.1") @kotlin.internal.InlineOnly public inline fun CharArray.contentHashCode(): Int { return java.util.Arrays.hashCode(this) } /** * Returns a string representation of the contents of the specified array as if it is [List]. */ @kotlin.jvm.JvmVersion @SinceKotlin("1.1") @kotlin.internal.InlineOnly public inline fun Array.contentToString(): String { return java.util.Arrays.toString(this) } /** * Returns a string representation of the contents of the specified array as if it is [List]. */ @kotlin.jvm.JvmVersion @SinceKotlin("1.1") @kotlin.internal.InlineOnly public inline fun ByteArray.contentToString(): String { return java.util.Arrays.toString(this) } /** * Returns a string representation of the contents of the specified array as if it is [List]. */ @kotlin.jvm.JvmVersion @SinceKotlin("1.1") @kotlin.internal.InlineOnly public inline fun ShortArray.contentToString(): String { return java.util.Arrays.toString(this) } /** * Returns a string representation of the contents of the specified array as if it is [List]. */ @kotlin.jvm.JvmVersion @SinceKotlin("1.1") @kotlin.internal.InlineOnly public inline fun IntArray.contentToString(): String { return java.util.Arrays.toString(this) } /** * Returns a string representation of the contents of the specified array as if it is [List]. */ @kotlin.jvm.JvmVersion @SinceKotlin("1.1") @kotlin.internal.InlineOnly public inline fun LongArray.contentToString(): String { return java.util.Arrays.toString(this) } /** * Returns a string representation of the contents of the specified array as if it is [List]. */ @kotlin.jvm.JvmVersion @SinceKotlin("1.1") @kotlin.internal.InlineOnly public inline fun FloatArray.contentToString(): String { return java.util.Arrays.toString(this) } /** * Returns a string representation of the contents of the specified array as if it is [List]. */ @kotlin.jvm.JvmVersion @SinceKotlin("1.1") @kotlin.internal.InlineOnly public inline fun DoubleArray.contentToString(): String { return java.util.Arrays.toString(this) } /** * Returns a string representation of the contents of the specified array as if it is [List]. */ @kotlin.jvm.JvmVersion @SinceKotlin("1.1") @kotlin.internal.InlineOnly public inline fun BooleanArray.contentToString(): String { return java.util.Arrays.toString(this) } /** * Returns a string representation of the contents of the specified array as if it is [List]. */ @kotlin.jvm.JvmVersion @SinceKotlin("1.1") @kotlin.internal.InlineOnly public inline fun CharArray.contentToString(): String { return java.util.Arrays.toString(this) } /** * 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 of Boolean containing all of the elements of this generic array. */ public fun Array.toBooleanArray(): BooleanArray { val result = BooleanArray(size) for (index in indices) result[index] = this[index] return result } /** * Returns an array of Byte containing all of the elements of this generic array. */ public fun Array.toByteArray(): ByteArray { val result = ByteArray(size) for (index in indices) result[index] = this[index] return result } /** * Returns an array of Char containing all of the elements of this generic array. */ public fun Array.toCharArray(): CharArray { val result = CharArray(size) for (index in indices) result[index] = this[index] return result } /** * Returns an array of Double containing all of the elements of this generic array. */ public fun Array.toDoubleArray(): DoubleArray { val result = DoubleArray(size) for (index in indices) result[index] = this[index] return result } /** * Returns an array of Float containing all of the elements of this generic array. */ public fun Array.toFloatArray(): FloatArray { val result = FloatArray(size) for (index in indices) result[index] = this[index] return result } /** * Returns an array of Int containing all of the elements of this generic array. */ public fun Array.toIntArray(): IntArray { val result = IntArray(size) for (index in indices) result[index] = this[index] return result } /** * Returns an array of Long containing all of the elements of this generic array. */ public fun Array.toLongArray(): LongArray { val result = LongArray(size) for (index in indices) result[index] = this[index] return result } /** * Returns an array of Short containing all of the elements of this generic array. */ public fun Array.toShortArray(): ShortArray { val result = ShortArray(size) for (index in indices) result[index] = this[index] return result } /** * 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. */ public inline fun Array.associate(transform: (T) -> Pair): Map { @Suppress("NON_PUBLIC_CALL_FROM_PUBLIC_INLINE") 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. */ public inline fun ByteArray.associate(transform: (Byte) -> Pair): Map { @Suppress("NON_PUBLIC_CALL_FROM_PUBLIC_INLINE") 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. */ public inline fun ShortArray.associate(transform: (Short) -> Pair): Map { @Suppress("NON_PUBLIC_CALL_FROM_PUBLIC_INLINE") 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. */ public inline fun IntArray.associate(transform: (Int) -> Pair): Map { @Suppress("NON_PUBLIC_CALL_FROM_PUBLIC_INLINE") 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. */ public inline fun LongArray.associate(transform: (Long) -> Pair): Map { @Suppress("NON_PUBLIC_CALL_FROM_PUBLIC_INLINE") 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. */ public inline fun FloatArray.associate(transform: (Float) -> Pair): Map { @Suppress("NON_PUBLIC_CALL_FROM_PUBLIC_INLINE") 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. */ public inline fun DoubleArray.associate(transform: (Double) -> Pair): Map { @Suppress("NON_PUBLIC_CALL_FROM_PUBLIC_INLINE") 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. */ public inline fun BooleanArray.associate(transform: (Boolean) -> Pair): Map { @Suppress("NON_PUBLIC_CALL_FROM_PUBLIC_INLINE") 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. */ public inline fun CharArray.associate(transform: (Char) -> Pair): Map { @Suppress("NON_PUBLIC_CALL_FROM_PUBLIC_INLINE") 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. */ public inline fun Array.associateBy(keySelector: (T) -> K): Map { @Suppress("NON_PUBLIC_CALL_FROM_PUBLIC_INLINE") 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. */ public inline fun ByteArray.associateBy(keySelector: (Byte) -> K): Map { @Suppress("NON_PUBLIC_CALL_FROM_PUBLIC_INLINE") 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. */ public inline fun ShortArray.associateBy(keySelector: (Short) -> K): Map { @Suppress("NON_PUBLIC_CALL_FROM_PUBLIC_INLINE") 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. */ public inline fun IntArray.associateBy(keySelector: (Int) -> K): Map { @Suppress("NON_PUBLIC_CALL_FROM_PUBLIC_INLINE") 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. */ public inline fun LongArray.associateBy(keySelector: (Long) -> K): Map { @Suppress("NON_PUBLIC_CALL_FROM_PUBLIC_INLINE") 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. */ public inline fun FloatArray.associateBy(keySelector: (Float) -> K): Map { @Suppress("NON_PUBLIC_CALL_FROM_PUBLIC_INLINE") 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. */ public inline fun DoubleArray.associateBy(keySelector: (Double) -> K): Map { @Suppress("NON_PUBLIC_CALL_FROM_PUBLIC_INLINE") 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. */ public inline fun BooleanArray.associateBy(keySelector: (Boolean) -> K): Map { @Suppress("NON_PUBLIC_CALL_FROM_PUBLIC_INLINE") 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. */ public inline fun CharArray.associateBy(keySelector: (Char) -> K): Map { @Suppress("NON_PUBLIC_CALL_FROM_PUBLIC_INLINE") 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. */ public inline fun Array.associateBy(keySelector: (T) -> K, valueTransform: (T) -> V): Map { @Suppress("NON_PUBLIC_CALL_FROM_PUBLIC_INLINE") 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. */ public inline fun ByteArray.associateBy(keySelector: (Byte) -> K, valueTransform: (Byte) -> V): Map { @Suppress("NON_PUBLIC_CALL_FROM_PUBLIC_INLINE") 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. */ public inline fun ShortArray.associateBy(keySelector: (Short) -> K, valueTransform: (Short) -> V): Map { @Suppress("NON_PUBLIC_CALL_FROM_PUBLIC_INLINE") 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. */ public inline fun IntArray.associateBy(keySelector: (Int) -> K, valueTransform: (Int) -> V): Map { @Suppress("NON_PUBLIC_CALL_FROM_PUBLIC_INLINE") 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. */ public inline fun LongArray.associateBy(keySelector: (Long) -> K, valueTransform: (Long) -> V): Map { @Suppress("NON_PUBLIC_CALL_FROM_PUBLIC_INLINE") 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. */ public inline fun FloatArray.associateBy(keySelector: (Float) -> K, valueTransform: (Float) -> V): Map { @Suppress("NON_PUBLIC_CALL_FROM_PUBLIC_INLINE") 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. */ public inline fun DoubleArray.associateBy(keySelector: (Double) -> K, valueTransform: (Double) -> V): Map { @Suppress("NON_PUBLIC_CALL_FROM_PUBLIC_INLINE") 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. */ public inline fun BooleanArray.associateBy(keySelector: (Boolean) -> K, valueTransform: (Boolean) -> V): Map { @Suppress("NON_PUBLIC_CALL_FROM_PUBLIC_INLINE") 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. */ public inline fun CharArray.associateBy(keySelector: (Char) -> K, valueTransform: (Char) -> V): Map { @Suppress("NON_PUBLIC_CALL_FROM_PUBLIC_INLINE") 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. */ 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. */ 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. */ 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. */ 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. */ 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. */ 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. */ 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. */ 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. */ 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. */ 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. */ 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. */ 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. */ 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. */ 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. */ 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. */ 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. */ 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. */ 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. */ 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. */ 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. */ 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. */ 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. */ 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. */ 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. */ 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. */ 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. */ public inline fun > CharArray.associateTo(destination: M, transform: (Char) -> Pair): M { for (element in this) { destination += transform(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 [HashSet] of all elements. */ public fun Array.toHashSet(): HashSet { return toCollection(HashSet(mapCapacity(size))) } /** * Returns a [HashSet] of all elements. */ public fun ByteArray.toHashSet(): HashSet { return toCollection(HashSet(mapCapacity(size))) } /** * Returns a [HashSet] of all elements. */ public fun ShortArray.toHashSet(): HashSet { return toCollection(HashSet(mapCapacity(size))) } /** * Returns a [HashSet] of all elements. */ public fun IntArray.toHashSet(): HashSet { return toCollection(HashSet(mapCapacity(size))) } /** * Returns a [HashSet] of all elements. */ public fun LongArray.toHashSet(): HashSet { return toCollection(HashSet(mapCapacity(size))) } /** * Returns a [HashSet] of all elements. */ public fun FloatArray.toHashSet(): HashSet { return toCollection(HashSet(mapCapacity(size))) } /** * Returns a [HashSet] of all elements. */ public fun DoubleArray.toHashSet(): HashSet { return toCollection(HashSet(mapCapacity(size))) } /** * Returns a [HashSet] of all elements. */ public fun BooleanArray.toHashSet(): HashSet { return toCollection(HashSet(mapCapacity(size))) } /** * Returns a [HashSet] of all elements. */ public fun CharArray.toHashSet(): HashSet { return toCollection(HashSet(mapCapacity(size))) } /** * 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 [MutableList] filled with all elements of this array. */ public fun Array.toMutableList(): MutableList { return ArrayList(this.asCollection()) } /** * Returns a [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 [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 [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 [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 [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 [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 [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 [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))) } } /** * Returns a [SortedSet] of all elements. */ @kotlin.jvm.JvmVersion public fun > Array.toSortedSet(): SortedSet { return toCollection(TreeSet()) } /** * Returns a [SortedSet] of all elements. */ @kotlin.jvm.JvmVersion public fun ByteArray.toSortedSet(): SortedSet { return toCollection(TreeSet()) } /** * Returns a [SortedSet] of all elements. */ @kotlin.jvm.JvmVersion public fun ShortArray.toSortedSet(): SortedSet { return toCollection(TreeSet()) } /** * Returns a [SortedSet] of all elements. */ @kotlin.jvm.JvmVersion public fun IntArray.toSortedSet(): SortedSet { return toCollection(TreeSet()) } /** * Returns a [SortedSet] of all elements. */ @kotlin.jvm.JvmVersion public fun LongArray.toSortedSet(): SortedSet { return toCollection(TreeSet()) } /** * Returns a [SortedSet] of all elements. */ @kotlin.jvm.JvmVersion public fun FloatArray.toSortedSet(): SortedSet { return toCollection(TreeSet()) } /** * Returns a [SortedSet] of all elements. */ @kotlin.jvm.JvmVersion public fun DoubleArray.toSortedSet(): SortedSet { return toCollection(TreeSet()) } /** * Returns a [SortedSet] of all elements. */ @kotlin.jvm.JvmVersion public fun BooleanArray.toSortedSet(): SortedSet { return toCollection(TreeSet()) } /** * Returns a [SortedSet] of all elements. */ @kotlin.jvm.JvmVersion public fun CharArray.toSortedSet(): SortedSet { return toCollection(TreeSet()) } /** * Returns a [SortedSet] of all elements. * * Elements in the set returned are sorted according to the given [comparator]. */ @kotlin.jvm.JvmVersion public fun Array.toSortedSet(comparator: Comparator): SortedSet { return toCollection(TreeSet(comparator)) } /** * Returns a single list of all elements yielded from results of [transform] function being invoked on each element of original array. */ 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. */ 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. */ 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. */ 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. */ 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. */ 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. */ 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. */ 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. */ public inline fun CharArray.flatMap(transform: (Char) -> Iterable): List { return flatMapTo(ArrayList(), transform) } /** * 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 } /** * 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 test.collections.CollectionTest.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 test.collections.CollectionTest.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 test.collections.CollectionTest.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 test.collections.CollectionTest.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 test.collections.CollectionTest.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 test.collections.CollectionTest.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 test.collections.CollectionTest.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 test.collections.CollectionTest.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 test.collections.CollectionTest.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 test.collections.CollectionTest.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 test.collections.CollectionTest.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 test.collections.CollectionTest.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 test.collections.CollectionTest.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 test.collections.CollectionTest.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 test.collections.CollectionTest.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 test.collections.CollectionTest.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 test.collections.CollectionTest.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 test.collections.CollectionTest.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 test.collections.CollectionTest.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 test.collections.CollectionTest.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 test.collections.CollectionTest.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 test.collections.CollectionTest.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 test.collections.CollectionTest.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 test.collections.CollectionTest.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 test.collections.CollectionTest.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 test.collections.CollectionTest.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 test.collections.CollectionTest.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 test.collections.CollectionTest.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 test.collections.CollectionTest.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 test.collections.CollectionTest.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 test.collections.CollectionTest.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 test.collections.CollectionTest.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 test.collections.CollectionTest.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 test.collections.CollectionTest.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 test.collections.CollectionTest.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 test.collections.CollectionTest.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 } /** * Returns a list containing the results of applying the given [transform] function * to each element in the original array. */ 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. */ 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. */ 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. */ 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. */ 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. */ 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. */ 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. */ 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. */ 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: (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: (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: (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: (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: (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: (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: (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: (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: (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: (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: (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: (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: (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: (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: (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: (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: (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: (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: (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: (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. */ 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] of [IndexedValue] for each element of the original array. */ public fun Array.withIndex(): Iterable> { return IndexingIterable { iterator() } } /** * Returns a lazy [Iterable] of [IndexedValue] for each element of the original array. */ public fun ByteArray.withIndex(): Iterable> { return IndexingIterable { iterator() } } /** * Returns a lazy [Iterable] of [IndexedValue] for each element of the original array. */ public fun ShortArray.withIndex(): Iterable> { return IndexingIterable { iterator() } } /** * Returns a lazy [Iterable] of [IndexedValue] for each element of the original array. */ public fun IntArray.withIndex(): Iterable> { return IndexingIterable { iterator() } } /** * Returns a lazy [Iterable] of [IndexedValue] for each element of the original array. */ public fun LongArray.withIndex(): Iterable> { return IndexingIterable { iterator() } } /** * Returns a lazy [Iterable] of [IndexedValue] for each element of the original array. */ public fun FloatArray.withIndex(): Iterable> { return IndexingIterable { iterator() } } /** * Returns a lazy [Iterable] of [IndexedValue] for each element of the original array. */ public fun DoubleArray.withIndex(): Iterable> { return IndexingIterable { iterator() } } /** * Returns a lazy [Iterable] of [IndexedValue] for each element of the original array. */ public fun BooleanArray.withIndex(): Iterable> { return IndexingIterable { iterator() } } /** * Returns a lazy [Iterable] of [IndexedValue] for each element of the original array. */ public fun CharArray.withIndex(): Iterable> { return IndexingIterable { iterator() } } /** * 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. */ 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. */ 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. */ 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. */ 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. */ 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. */ 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. */ 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. */ 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. */ 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. * * The elements in the resulting list are in the same order as they were in the source array. */ 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. */ 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. */ 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. */ 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. */ 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. */ 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. */ 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. */ 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. */ 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 set and the specified collection. * * The returned set preserves the element iteration order of the original array. */ 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 set and the specified collection. * * The returned set preserves the element iteration order of the original array. */ 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 set and the specified collection. * * The returned set preserves the element iteration order of the original array. */ 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 set and the specified collection. * * The returned set preserves the element iteration order of the original array. */ 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 set and the specified collection. * * The returned set preserves the element iteration order of the original array. */ 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 set and the specified collection. * * The returned set preserves the element iteration order of the original array. */ 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 set and the specified collection. * * The returned set preserves the element iteration order of the original array. */ 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 set and the specified collection. * * The returned set preserves the element iteration order of the original array. */ 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 set and the specified collection. * * The returned set preserves the element iteration order of the original array. */ 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 mutable set 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 { val set = LinkedHashSet(mapCapacity(size)) for (item in this) set.add(item) return set } /** * Returns a mutable set 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 { val set = LinkedHashSet(mapCapacity(size)) for (item in this) set.add(item) return set } /** * Returns a mutable set 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 { val set = LinkedHashSet(mapCapacity(size)) for (item in this) set.add(item) return set } /** * Returns a mutable set 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 { val set = LinkedHashSet(mapCapacity(size)) for (item in this) set.add(item) return set } /** * Returns a mutable set 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 { val set = LinkedHashSet(mapCapacity(size)) for (item in this) set.add(item) return set } /** * Returns a mutable set 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 { val set = LinkedHashSet(mapCapacity(size)) for (item in this) set.add(item) return set } /** * Returns a mutable set 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 { val set = LinkedHashSet(mapCapacity(size)) for (item in this) set.add(item) return set } /** * Returns a mutable set 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 { val set = LinkedHashSet(mapCapacity(size)) for (item in this) set.add(item) return set } /** * Returns a mutable set 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 { val set = LinkedHashSet(mapCapacity(size)) for (item in this) set.add(item) 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. */ 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. */ 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. */ 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. */ 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. */ 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. */ 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. */ 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. */ 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. */ 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]. */ 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]. */ 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]. */ 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]. */ 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]. */ 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]. */ 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]. */ 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]. */ 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]. */ 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. */ public fun Array.any(): Boolean { for (element in this) return true return false } /** * Returns `true` if array has at least one element. */ public fun ByteArray.any(): Boolean { for (element in this) return true return false } /** * Returns `true` if array has at least one element. */ public fun ShortArray.any(): Boolean { for (element in this) return true return false } /** * Returns `true` if array has at least one element. */ public fun IntArray.any(): Boolean { for (element in this) return true return false } /** * Returns `true` if array has at least one element. */ public fun LongArray.any(): Boolean { for (element in this) return true return false } /** * Returns `true` if array has at least one element. */ public fun FloatArray.any(): Boolean { for (element in this) return true return false } /** * Returns `true` if array has at least one element. */ public fun DoubleArray.any(): Boolean { for (element in this) return true return false } /** * Returns `true` if array has at least one element. */ public fun BooleanArray.any(): Boolean { for (element in this) return true return false } /** * Returns `true` if array has at least one element. */ public fun CharArray.any(): Boolean { for (element in this) return true return false } /** * Returns `true` if at least one element matches the given [predicate]. */ 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]. */ 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]. */ 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]. */ 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]. */ 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]. */ 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]. */ 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]. */ 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]. */ 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. */ public inline fun Array.fold(initial: R, operation: (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. */ public inline fun ByteArray.fold(initial: R, operation: (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. */ public inline fun ShortArray.fold(initial: R, operation: (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. */ public inline fun IntArray.fold(initial: R, operation: (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. */ public inline fun LongArray.fold(initial: R, operation: (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. */ public inline fun FloatArray.fold(initial: R, operation: (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. */ public inline fun DoubleArray.fold(initial: R, operation: (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. */ public inline fun BooleanArray.fold(initial: R, operation: (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. */ public inline fun CharArray.fold(initial: R, operation: (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. * @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: (Int, 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. * @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: (Int, 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. * @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: (Int, 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. * @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: (Int, 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. * @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: (Int, 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. * @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: (Int, 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. * @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: (Int, 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. * @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: (Int, 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. * @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: (Int, 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. */ public inline fun Array.foldRight(initial: R, operation: (T, 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. */ public inline fun ByteArray.foldRight(initial: R, operation: (Byte, 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. */ public inline fun ShortArray.foldRight(initial: R, operation: (Short, 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. */ public inline fun IntArray.foldRight(initial: R, operation: (Int, 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. */ public inline fun LongArray.foldRight(initial: R, operation: (Long, 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. */ public inline fun FloatArray.foldRight(initial: R, operation: (Float, 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. */ public inline fun DoubleArray.foldRight(initial: R, operation: (Double, 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. */ public inline fun BooleanArray.foldRight(initial: R, operation: (Boolean, 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. */ public inline fun CharArray.foldRight(initial: R, operation: (Char, 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. * @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: (Int, T, 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. * @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: (Int, Byte, 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. * @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: (Int, Short, 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. * @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: (Int, Int, 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. * @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: (Int, Long, 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. * @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: (Int, Float, 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. * @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: (Int, Double, 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. * @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: (Int, Boolean, 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. * @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: (Int, Char, 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 desired action on the element. */ public inline fun Array.forEachIndexed(action: (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 desired action on the element. */ public inline fun ByteArray.forEachIndexed(action: (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 desired action on the element. */ public inline fun ShortArray.forEachIndexed(action: (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 desired action on the element. */ public inline fun IntArray.forEachIndexed(action: (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 desired action on the element. */ public inline fun LongArray.forEachIndexed(action: (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 desired action on the element. */ public inline fun FloatArray.forEachIndexed(action: (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 desired action on the element. */ public inline fun DoubleArray.forEachIndexed(action: (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 desired action on the element. */ public inline fun BooleanArray.forEachIndexed(action: (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 desired action on the element. */ public inline fun CharArray.forEachIndexed(action: (Int, Char) -> Unit): Unit { var index = 0 for (item in this) action(index++, item) } /** * Returns the largest element or `null` if there are no elements. */ public fun > Array.max(): 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 there are no elements. */ public fun ByteArray.max(): 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 there are no elements. */ public fun ShortArray.max(): 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 there are no elements. */ public fun IntArray.max(): 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 there are no elements. */ public fun LongArray.max(): 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 there are no elements. */ public fun FloatArray.max(): Float? { 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 there are no elements. */ public fun DoubleArray.max(): Double? { 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 there are no elements. */ public fun CharArray.max(): 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 yielding the largest value of the given function or `null` if there are no elements. */ public inline fun > Array.maxBy(selector: (T) -> R): T? { if (isEmpty()) return null var maxElem = this[0] 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 function or `null` if there are no elements. */ public inline fun > ByteArray.maxBy(selector: (Byte) -> R): Byte? { if (isEmpty()) return null var maxElem = this[0] 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 function or `null` if there are no elements. */ public inline fun > ShortArray.maxBy(selector: (Short) -> R): Short? { if (isEmpty()) return null var maxElem = this[0] 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 function or `null` if there are no elements. */ public inline fun > IntArray.maxBy(selector: (Int) -> R): Int? { if (isEmpty()) return null var maxElem = this[0] 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 function or `null` if there are no elements. */ public inline fun > LongArray.maxBy(selector: (Long) -> R): Long? { if (isEmpty()) return null var maxElem = this[0] 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 function or `null` if there are no elements. */ public inline fun > FloatArray.maxBy(selector: (Float) -> R): Float? { if (isEmpty()) return null var maxElem = this[0] 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 function or `null` if there are no elements. */ public inline fun > DoubleArray.maxBy(selector: (Double) -> R): Double? { if (isEmpty()) return null var maxElem = this[0] 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 function or `null` if there are no elements. */ public inline fun > BooleanArray.maxBy(selector: (Boolean) -> R): Boolean? { if (isEmpty()) return null var maxElem = this[0] 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 function or `null` if there are no elements. */ public inline fun > CharArray.maxBy(selector: (Char) -> R): Char? { if (isEmpty()) return null var maxElem = this[0] 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 having the largest value according to the provided [comparator] or `null` if there are no elements. */ public fun Array.maxWith(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. */ public fun ByteArray.maxWith(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. */ public fun ShortArray.maxWith(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. */ public fun IntArray.maxWith(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. */ public fun LongArray.maxWith(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. */ public fun FloatArray.maxWith(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. */ public fun DoubleArray.maxWith(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. */ public fun BooleanArray.maxWith(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. */ public fun CharArray.maxWith(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 or `null` if there are no elements. */ public fun > Array.min(): 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 there are no elements. */ public fun ByteArray.min(): 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 there are no elements. */ public fun ShortArray.min(): 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 there are no elements. */ public fun IntArray.min(): 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 there are no elements. */ public fun LongArray.min(): 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 there are no elements. */ public fun FloatArray.min(): Float? { 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 there are no elements. */ public fun DoubleArray.min(): Double? { 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 there are no elements. */ public fun CharArray.min(): 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 yielding the smallest value of the given function or `null` if there are no elements. */ public inline fun > Array.minBy(selector: (T) -> R): T? { if (isEmpty()) return null var minElem = this[0] 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 function or `null` if there are no elements. */ public inline fun > ByteArray.minBy(selector: (Byte) -> R): Byte? { if (isEmpty()) return null var minElem = this[0] 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 function or `null` if there are no elements. */ public inline fun > ShortArray.minBy(selector: (Short) -> R): Short? { if (isEmpty()) return null var minElem = this[0] 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 function or `null` if there are no elements. */ public inline fun > IntArray.minBy(selector: (Int) -> R): Int? { if (isEmpty()) return null var minElem = this[0] 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 function or `null` if there are no elements. */ public inline fun > LongArray.minBy(selector: (Long) -> R): Long? { if (isEmpty()) return null var minElem = this[0] 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 function or `null` if there are no elements. */ public inline fun > FloatArray.minBy(selector: (Float) -> R): Float? { if (isEmpty()) return null var minElem = this[0] 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 function or `null` if there are no elements. */ public inline fun > DoubleArray.minBy(selector: (Double) -> R): Double? { if (isEmpty()) return null var minElem = this[0] 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 function or `null` if there are no elements. */ public inline fun > BooleanArray.minBy(selector: (Boolean) -> R): Boolean? { if (isEmpty()) return null var minElem = this[0] 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 function or `null` if there are no elements. */ public inline fun > CharArray.minBy(selector: (Char) -> R): Char? { if (isEmpty()) return null var minElem = this[0] 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 having the smallest value according to the provided [comparator] or `null` if there are no elements. */ public fun Array.minWith(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. */ public fun ByteArray.minWith(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. */ public fun ShortArray.minWith(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. */ public fun IntArray.minWith(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. */ public fun LongArray.minWith(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. */ public fun FloatArray.minWith(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. */ public fun DoubleArray.minWith(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. */ public fun BooleanArray.minWith(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. */ public fun CharArray.minWith(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. */ public fun Array.none(): Boolean { for (element in this) return false return true } /** * Returns `true` if the array has no elements. */ public fun ByteArray.none(): Boolean { for (element in this) return false return true } /** * Returns `true` if the array has no elements. */ public fun ShortArray.none(): Boolean { for (element in this) return false return true } /** * Returns `true` if the array has no elements. */ public fun IntArray.none(): Boolean { for (element in this) return false return true } /** * Returns `true` if the array has no elements. */ public fun LongArray.none(): Boolean { for (element in this) return false return true } /** * Returns `true` if the array has no elements. */ public fun FloatArray.none(): Boolean { for (element in this) return false return true } /** * Returns `true` if the array has no elements. */ public fun DoubleArray.none(): Boolean { for (element in this) return false return true } /** * Returns `true` if the array has no elements. */ public fun BooleanArray.none(): Boolean { for (element in this) return false return true } /** * Returns `true` if the array has no elements. */ public fun CharArray.none(): Boolean { for (element in this) return false return true } /** * Returns `true` if no elements match the given [predicate]. */ 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]. */ 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]. */ 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]. */ 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]. */ 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]. */ 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]. */ 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]. */ 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]. */ public inline fun CharArray.none(predicate: (Char) -> Boolean): Boolean { for (element in this) if (predicate(element)) return false return true } /** * Accumulates value starting with the first element and applying [operation] from left to right to current accumulator value and each element. */ public inline fun Array.reduce(operation: (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. */ public inline fun ByteArray.reduce(operation: (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. */ public inline fun ShortArray.reduce(operation: (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. */ public inline fun IntArray.reduce(operation: (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. */ public inline fun LongArray.reduce(operation: (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. */ public inline fun FloatArray.reduce(operation: (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. */ public inline fun DoubleArray.reduce(operation: (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. */ public inline fun BooleanArray.reduce(operation: (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. */ public inline fun CharArray.reduce(operation: (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. * @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.reduceIndexed(operation: (Int, 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. * @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.reduceIndexed(operation: (Int, 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. * @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.reduceIndexed(operation: (Int, 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. * @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.reduceIndexed(operation: (Int, 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. * @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.reduceIndexed(operation: (Int, 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. * @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.reduceIndexed(operation: (Int, 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. * @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.reduceIndexed(operation: (Int, 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. * @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.reduceIndexed(operation: (Int, 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. * @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.reduceIndexed(operation: (Int, 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 last element and applying [operation] from right to left to each element and current accumulator value. */ public inline fun Array.reduceRight(operation: (T, 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 last element and applying [operation] from right to left to each element and current accumulator value. */ public inline fun ByteArray.reduceRight(operation: (Byte, 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 last element and applying [operation] from right to left to each element and current accumulator value. */ public inline fun ShortArray.reduceRight(operation: (Short, 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 last element and applying [operation] from right to left to each element and current accumulator value. */ public inline fun IntArray.reduceRight(operation: (Int, 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 last element and applying [operation] from right to left to each element and current accumulator value. */ public inline fun LongArray.reduceRight(operation: (Long, 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 last element and applying [operation] from right to left to each element and current accumulator value. */ public inline fun FloatArray.reduceRight(operation: (Float, 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 last element and applying [operation] from right to left to each element and current accumulator value. */ public inline fun DoubleArray.reduceRight(operation: (Double, 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 last element and applying [operation] from right to left to each element and current accumulator value. */ public inline fun BooleanArray.reduceRight(operation: (Boolean, 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 last element and applying [operation] from right to left to each element and current accumulator value. */ public inline fun CharArray.reduceRight(operation: (Char, 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 last element and applying [operation] from right to left * to each element with its index in the original array and current accumulator value. * @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.reduceRightIndexed(operation: (Int, T, 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 last element and applying [operation] from right to left * to each element with its index in the original array and current accumulator value. * @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.reduceRightIndexed(operation: (Int, Byte, 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 last element and applying [operation] from right to left * to each element with its index in the original array and current accumulator value. * @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.reduceRightIndexed(operation: (Int, Short, 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 last element and applying [operation] from right to left * to each element with its index in the original array and current accumulator value. * @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.reduceRightIndexed(operation: (Int, Int, 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 last element and applying [operation] from right to left * to each element with its index in the original array and current accumulator value. * @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.reduceRightIndexed(operation: (Int, Long, 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 last element and applying [operation] from right to left * to each element with its index in the original array and current accumulator value. * @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.reduceRightIndexed(operation: (Int, Float, 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 last element and applying [operation] from right to left * to each element with its index in the original array and current accumulator value. * @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.reduceRightIndexed(operation: (Int, Double, 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 last element and applying [operation] from right to left * to each element with its index in the original array and current accumulator value. * @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.reduceRightIndexed(operation: (Int, Boolean, 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 last element and applying [operation] from right to left * to each element with its index in the original array and current accumulator value. * @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.reduceRightIndexed(operation: (Int, Char, 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 } /** * Returns the sum of all values produced by [selector] function applied to each element in the array. */ 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. */ 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. */ 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. */ 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. */ 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. */ 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. */ 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. */ 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. */ 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. */ 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. */ 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. */ 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. */ 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. */ 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. */ 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. */ 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. */ 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. */ public inline fun CharArray.sumByDouble(selector: (Char) -> Double): Double { var sum: Double = 0.0 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 pair of lists, * where *first* list contains elements for which [predicate] yielded `true`, * while *second* list contains elements for which [predicate] yielded `false`. */ 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 pair of lists, * where *first* list contains elements for which [predicate] yielded `true`, * while *second* list contains elements for which [predicate] yielded `false`. */ 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 pair of lists, * where *first* list contains elements for which [predicate] yielded `true`, * while *second* list contains elements for which [predicate] yielded `false`. */ 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 pair of lists, * where *first* list contains elements for which [predicate] yielded `true`, * while *second* list contains elements for which [predicate] yielded `false`. */ 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 pair of lists, * where *first* list contains elements for which [predicate] yielded `true`, * while *second* list contains elements for which [predicate] yielded `false`. */ 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 pair of lists, * where *first* list contains elements for which [predicate] yielded `true`, * while *second* list contains elements for which [predicate] yielded `false`. */ 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 pair of lists, * where *first* list contains elements for which [predicate] yielded `true`, * while *second* list contains elements for which [predicate] yielded `false`. */ 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 pair of lists, * where *first* list contains elements for which [predicate] yielded `true`, * while *second* list contains elements for which [predicate] yielded `false`. */ 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 pair of lists, * where *first* list contains elements for which [predicate] yielded `true`, * while *second* list contains elements for which [predicate] yielded `false`. */ 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 elements of both collections with same indexes. List has length of shortest collection. */ public infix fun Array.zip(other: Array): List> { return zip(other) { t1, t2 -> t1 to t2 } } /** * Returns a list of pairs built from elements of both collections with same indexes. List has length of shortest collection. */ public infix fun ByteArray.zip(other: Array): List> { return zip(other) { t1, t2 -> t1 to t2 } } /** * Returns a list of pairs built from elements of both collections with same indexes. List has length of shortest collection. */ public infix fun ShortArray.zip(other: Array): List> { return zip(other) { t1, t2 -> t1 to t2 } } /** * Returns a list of pairs built from elements of both collections with same indexes. List has length of shortest collection. */ public infix fun IntArray.zip(other: Array): List> { return zip(other) { t1, t2 -> t1 to t2 } } /** * Returns a list of pairs built from elements of both collections with same indexes. List has length of shortest collection. */ public infix fun LongArray.zip(other: Array): List> { return zip(other) { t1, t2 -> t1 to t2 } } /** * Returns a list of pairs built from elements of both collections with same indexes. List has length of shortest collection. */ public infix fun FloatArray.zip(other: Array): List> { return zip(other) { t1, t2 -> t1 to t2 } } /** * Returns a list of pairs built from elements of both collections with same indexes. List has length of shortest collection. */ public infix fun DoubleArray.zip(other: Array): List> { return zip(other) { t1, t2 -> t1 to t2 } } /** * Returns a list of pairs built from elements of both collections with same indexes. List has length of shortest collection. */ public infix fun BooleanArray.zip(other: Array): List> { return zip(other) { t1, t2 -> t1 to t2 } } /** * Returns a list of pairs built from elements of both collections with same indexes. List has length of shortest collection. */ public infix fun CharArray.zip(other: Array): List> { return zip(other) { t1, t2 -> t1 to t2 } } /** * Returns a list of values built from elements of both collections with same indexes using provided [transform]. List has length of shortest collection. */ public inline fun Array.zip(other: Array, transform: (T, R) -> V): List { val size = Math.min(size, other.size) val list = ArrayList(size) for (i in 0..size-1) { list.add(transform(this[i], other[i])) } return list } /** * Returns a list of values built from elements of both collections with same indexes using provided [transform]. List has length of shortest collection. */ public inline fun ByteArray.zip(other: Array, transform: (Byte, R) -> V): List { val size = Math.min(size, other.size) val list = ArrayList(size) for (i in 0..size-1) { list.add(transform(this[i], other[i])) } return list } /** * Returns a list of values built from elements of both collections with same indexes using provided [transform]. List has length of shortest collection. */ public inline fun ShortArray.zip(other: Array, transform: (Short, R) -> V): List { val size = Math.min(size, other.size) val list = ArrayList(size) for (i in 0..size-1) { list.add(transform(this[i], other[i])) } return list } /** * Returns a list of values built from elements of both collections with same indexes using provided [transform]. List has length of shortest collection. */ public inline fun IntArray.zip(other: Array, transform: (Int, R) -> V): List { val size = Math.min(size, other.size) val list = ArrayList(size) for (i in 0..size-1) { list.add(transform(this[i], other[i])) } return list } /** * Returns a list of values built from elements of both collections with same indexes using provided [transform]. List has length of shortest collection. */ public inline fun LongArray.zip(other: Array, transform: (Long, R) -> V): List { val size = Math.min(size, other.size) val list = ArrayList(size) for (i in 0..size-1) { list.add(transform(this[i], other[i])) } return list } /** * Returns a list of values built from elements of both collections with same indexes using provided [transform]. List has length of shortest collection. */ public inline fun FloatArray.zip(other: Array, transform: (Float, R) -> V): List { val size = Math.min(size, other.size) val list = ArrayList(size) for (i in 0..size-1) { list.add(transform(this[i], other[i])) } return list } /** * Returns a list of values built from elements of both collections with same indexes using provided [transform]. List has length of shortest collection. */ public inline fun DoubleArray.zip(other: Array, transform: (Double, R) -> V): List { val size = Math.min(size, other.size) val list = ArrayList(size) for (i in 0..size-1) { list.add(transform(this[i], other[i])) } return list } /** * Returns a list of values built from elements of both collections with same indexes using provided [transform]. List has length of shortest collection. */ public inline fun BooleanArray.zip(other: Array, transform: (Boolean, R) -> V): List { val size = Math.min(size, other.size) val list = ArrayList(size) for (i in 0..size-1) { list.add(transform(this[i], other[i])) } return list } /** * Returns a list of values built from elements of both collections with same indexes using provided [transform]. List has length of shortest collection. */ public inline fun CharArray.zip(other: Array, transform: (Char, R) -> V): List { val size = Math.min(size, other.size) val list = ArrayList(size) for (i in 0..size-1) { list.add(transform(this[i], other[i])) } return list } /** * Returns a list of pairs built from elements of both collections with same indexes. List has length of shortest collection. */ public infix fun Array.zip(other: Iterable): List> { return zip(other) { t1, t2 -> t1 to t2 } } /** * Returns a list of pairs built from elements of both collections with same indexes. List has length of shortest collection. */ public infix fun ByteArray.zip(other: Iterable): List> { return zip(other) { t1, t2 -> t1 to t2 } } /** * Returns a list of pairs built from elements of both collections with same indexes. List has length of shortest collection. */ public infix fun ShortArray.zip(other: Iterable): List> { return zip(other) { t1, t2 -> t1 to t2 } } /** * Returns a list of pairs built from elements of both collections with same indexes. List has length of shortest collection. */ public infix fun IntArray.zip(other: Iterable): List> { return zip(other) { t1, t2 -> t1 to t2 } } /** * Returns a list of pairs built from elements of both collections with same indexes. List has length of shortest collection. */ public infix fun LongArray.zip(other: Iterable): List> { return zip(other) { t1, t2 -> t1 to t2 } } /** * Returns a list of pairs built from elements of both collections with same indexes. List has length of shortest collection. */ public infix fun FloatArray.zip(other: Iterable): List> { return zip(other) { t1, t2 -> t1 to t2 } } /** * Returns a list of pairs built from elements of both collections with same indexes. List has length of shortest collection. */ public infix fun DoubleArray.zip(other: Iterable): List> { return zip(other) { t1, t2 -> t1 to t2 } } /** * Returns a list of pairs built from elements of both collections with same indexes. List has length of shortest collection. */ public infix fun BooleanArray.zip(other: Iterable): List> { return zip(other) { t1, t2 -> t1 to t2 } } /** * Returns a list of pairs built from elements of both collections with same indexes. List has length of shortest collection. */ public infix fun CharArray.zip(other: Iterable): List> { return zip(other) { t1, t2 -> t1 to t2 } } /** * Returns a list of values built from elements of both collections with same indexes using provided [transform]. List has length of shortest collection. */ public inline fun Array.zip(other: Iterable, transform: (T, R) -> V): List { val arraySize = size @Suppress("NON_PUBLIC_CALL_FROM_PUBLIC_INLINE") val list = ArrayList(Math.min(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 elements of both collections with same indexes using provided [transform]. List has length of shortest collection. */ public inline fun ByteArray.zip(other: Iterable, transform: (Byte, R) -> V): List { val arraySize = size @Suppress("NON_PUBLIC_CALL_FROM_PUBLIC_INLINE") val list = ArrayList(Math.min(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 elements of both collections with same indexes using provided [transform]. List has length of shortest collection. */ public inline fun ShortArray.zip(other: Iterable, transform: (Short, R) -> V): List { val arraySize = size @Suppress("NON_PUBLIC_CALL_FROM_PUBLIC_INLINE") val list = ArrayList(Math.min(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 elements of both collections with same indexes using provided [transform]. List has length of shortest collection. */ public inline fun IntArray.zip(other: Iterable, transform: (Int, R) -> V): List { val arraySize = size @Suppress("NON_PUBLIC_CALL_FROM_PUBLIC_INLINE") val list = ArrayList(Math.min(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 elements of both collections with same indexes using provided [transform]. List has length of shortest collection. */ public inline fun LongArray.zip(other: Iterable, transform: (Long, R) -> V): List { val arraySize = size @Suppress("NON_PUBLIC_CALL_FROM_PUBLIC_INLINE") val list = ArrayList(Math.min(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 elements of both collections with same indexes using provided [transform]. List has length of shortest collection. */ public inline fun FloatArray.zip(other: Iterable, transform: (Float, R) -> V): List { val arraySize = size @Suppress("NON_PUBLIC_CALL_FROM_PUBLIC_INLINE") val list = ArrayList(Math.min(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 elements of both collections with same indexes using provided [transform]. List has length of shortest collection. */ public inline fun DoubleArray.zip(other: Iterable, transform: (Double, R) -> V): List { val arraySize = size @Suppress("NON_PUBLIC_CALL_FROM_PUBLIC_INLINE") val list = ArrayList(Math.min(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 elements of both collections with same indexes using provided [transform]. List has length of shortest collection. */ public inline fun BooleanArray.zip(other: Iterable, transform: (Boolean, R) -> V): List { val arraySize = size @Suppress("NON_PUBLIC_CALL_FROM_PUBLIC_INLINE") val list = ArrayList(Math.min(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 elements of both collections with same indexes using provided [transform]. List has length of shortest collection. */ public inline fun CharArray.zip(other: Iterable, transform: (Char, R) -> V): List { val arraySize = size @Suppress("NON_PUBLIC_CALL_FROM_PUBLIC_INLINE") val list = ArrayList(Math.min(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 elements of both collections with same indexes. List has length of shortest collection. */ public infix fun ByteArray.zip(other: ByteArray): List> { return zip(other) { t1, t2 -> t1 to t2 } } /** * Returns a list of pairs built from elements of both collections with same indexes. List has length of shortest collection. */ public infix fun ShortArray.zip(other: ShortArray): List> { return zip(other) { t1, t2 -> t1 to t2 } } /** * Returns a list of pairs built from elements of both collections with same indexes. List has length of shortest collection. */ public infix fun IntArray.zip(other: IntArray): List> { return zip(other) { t1, t2 -> t1 to t2 } } /** * Returns a list of pairs built from elements of both collections with same indexes. List has length of shortest collection. */ public infix fun LongArray.zip(other: LongArray): List> { return zip(other) { t1, t2 -> t1 to t2 } } /** * Returns a list of pairs built from elements of both collections with same indexes. List has length of shortest collection. */ public infix fun FloatArray.zip(other: FloatArray): List> { return zip(other) { t1, t2 -> t1 to t2 } } /** * Returns a list of pairs built from elements of both collections with same indexes. List has length of shortest collection. */ public infix fun DoubleArray.zip(other: DoubleArray): List> { return zip(other) { t1, t2 -> t1 to t2 } } /** * Returns a list of pairs built from elements of both collections with same indexes. List has length of shortest collection. */ public infix fun BooleanArray.zip(other: BooleanArray): List> { return zip(other) { t1, t2 -> t1 to t2 } } /** * Returns a list of pairs built from elements of both collections with same indexes. List has length of shortest collection. */ public infix fun CharArray.zip(other: CharArray): List> { return zip(other) { t1, t2 -> t1 to t2 } } /** * Returns a list of values built from elements of both collections with same indexes using provided [transform]. List has length of shortest collection. */ public inline fun ByteArray.zip(other: ByteArray, transform: (Byte, Byte) -> V): List { val size = Math.min(size, other.size) val list = ArrayList(size) for (i in 0..size-1) { list.add(transform(this[i], other[i])) } return list } /** * Returns a list of values built from elements of both collections with same indexes using provided [transform]. List has length of shortest collection. */ public inline fun ShortArray.zip(other: ShortArray, transform: (Short, Short) -> V): List { val size = Math.min(size, other.size) val list = ArrayList(size) for (i in 0..size-1) { list.add(transform(this[i], other[i])) } return list } /** * Returns a list of values built from elements of both collections with same indexes using provided [transform]. List has length of shortest collection. */ public inline fun IntArray.zip(other: IntArray, transform: (Int, Int) -> V): List { val size = Math.min(size, other.size) val list = ArrayList(size) for (i in 0..size-1) { list.add(transform(this[i], other[i])) } return list } /** * Returns a list of values built from elements of both collections with same indexes using provided [transform]. List has length of shortest collection. */ public inline fun LongArray.zip(other: LongArray, transform: (Long, Long) -> V): List { val size = Math.min(size, other.size) val list = ArrayList(size) for (i in 0..size-1) { list.add(transform(this[i], other[i])) } return list } /** * Returns a list of values built from elements of both collections with same indexes using provided [transform]. List has length of shortest collection. */ public inline fun FloatArray.zip(other: FloatArray, transform: (Float, Float) -> V): List { val size = Math.min(size, other.size) val list = ArrayList(size) for (i in 0..size-1) { list.add(transform(this[i], other[i])) } return list } /** * Returns a list of values built from elements of both collections with same indexes using provided [transform]. List has length of shortest collection. */ public inline fun DoubleArray.zip(other: DoubleArray, transform: (Double, Double) -> V): List { val size = Math.min(size, other.size) val list = ArrayList(size) for (i in 0..size-1) { list.add(transform(this[i], other[i])) } return list } /** * Returns a list of values built from elements of both collections with same indexes using provided [transform]. List has length of shortest collection. */ public inline fun BooleanArray.zip(other: BooleanArray, transform: (Boolean, Boolean) -> V): List { val size = Math.min(size, other.size) val list = ArrayList(size) for (i in 0..size-1) { list.add(transform(this[i], other[i])) } return list } /** * Returns a list of values built from elements of both collections with same indexes using provided [transform]. List has length of shortest collection. */ public inline fun CharArray.zip(other: CharArray, transform: (Char, Char) -> V): List { val size = Math.min(size, other.size) val list = ArrayList(size) for (i in 0..size-1) { 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 "..."). */ 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) { if (transform != null) buffer.append(transform(element)) else buffer.append(if (element == null) "null" else 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 "..."). */ 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 "..."). */ 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 "..."). */ 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 "..."). */ 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 "..."). */ 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 "..."). */ 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 "..."). */ 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 "..."). */ 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.toString()) } 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 "..."). */ 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 "..."). */ 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 "..."). */ 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 "..."). */ 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 "..."). */ 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 "..."). */ 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 "..."). */ 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 "..."). */ 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 "..."). */ 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. */ 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. */ 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. */ 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. */ 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. */ 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. */ 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. */ 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. */ 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. */ public fun CharArray.asSequence(): Sequence { if (isEmpty()) return emptySequence() return Sequence { this.iterator() } } /** * Returns a [List] that wraps the original array. */ @kotlin.jvm.JvmVersion public fun Array.asList(): List { return ArraysUtilJVM.asList(this) } /** * Returns a [List] that wraps the original array. */ @kotlin.jvm.JvmVersion public fun ByteArray.asList(): List { return object : AbstractList(), RandomAccess { override val size: Int get() = this@asList.size override fun isEmpty(): Boolean = this@asList.isEmpty() override fun contains(element: Byte): Boolean = this@asList.contains(element) override fun get(index: Int): Byte = this@asList[index] override fun indexOf(element: Byte): Int = this@asList.indexOf(element) override fun lastIndexOf(element: Byte): Int = this@asList.lastIndexOf(element) } } /** * Returns a [List] that wraps the original array. */ @kotlin.jvm.JvmVersion public fun ShortArray.asList(): List { return object : AbstractList(), RandomAccess { override val size: Int get() = this@asList.size override fun isEmpty(): Boolean = this@asList.isEmpty() override fun contains(element: Short): Boolean = this@asList.contains(element) override fun get(index: Int): Short = this@asList[index] override fun indexOf(element: Short): Int = this@asList.indexOf(element) override fun lastIndexOf(element: Short): Int = this@asList.lastIndexOf(element) } } /** * Returns a [List] that wraps the original array. */ @kotlin.jvm.JvmVersion public fun IntArray.asList(): List { return object : AbstractList(), RandomAccess { override val size: Int get() = this@asList.size override fun isEmpty(): Boolean = this@asList.isEmpty() override fun contains(element: Int): Boolean = this@asList.contains(element) override fun get(index: Int): Int = this@asList[index] override fun indexOf(element: Int): Int = this@asList.indexOf(element) override fun lastIndexOf(element: Int): Int = this@asList.lastIndexOf(element) } } /** * Returns a [List] that wraps the original array. */ @kotlin.jvm.JvmVersion public fun LongArray.asList(): List { return object : AbstractList(), RandomAccess { override val size: Int get() = this@asList.size override fun isEmpty(): Boolean = this@asList.isEmpty() override fun contains(element: Long): Boolean = this@asList.contains(element) override fun get(index: Int): Long = this@asList[index] override fun indexOf(element: Long): Int = this@asList.indexOf(element) override fun lastIndexOf(element: Long): Int = this@asList.lastIndexOf(element) } } /** * Returns a [List] that wraps the original array. */ @kotlin.jvm.JvmVersion public fun FloatArray.asList(): List { return object : AbstractList(), RandomAccess { override val size: Int get() = this@asList.size override fun isEmpty(): Boolean = this@asList.isEmpty() override fun contains(element: Float): Boolean = this@asList.contains(element) override fun get(index: Int): Float = this@asList[index] override fun indexOf(element: Float): Int = this@asList.indexOf(element) override fun lastIndexOf(element: Float): Int = this@asList.lastIndexOf(element) } } /** * Returns a [List] that wraps the original array. */ @kotlin.jvm.JvmVersion public fun DoubleArray.asList(): List { return object : AbstractList(), RandomAccess { override val size: Int get() = this@asList.size override fun isEmpty(): Boolean = this@asList.isEmpty() override fun contains(element: Double): Boolean = this@asList.contains(element) override fun get(index: Int): Double = this@asList[index] override fun indexOf(element: Double): Int = this@asList.indexOf(element) override fun lastIndexOf(element: Double): Int = this@asList.lastIndexOf(element) } } /** * Returns a [List] that wraps the original array. */ @kotlin.jvm.JvmVersion public fun BooleanArray.asList(): List { return object : AbstractList(), RandomAccess { override val size: Int get() = this@asList.size override fun isEmpty(): Boolean = this@asList.isEmpty() override fun contains(element: Boolean): Boolean = this@asList.contains(element) override fun get(index: Int): Boolean = this@asList[index] override fun indexOf(element: Boolean): Int = this@asList.indexOf(element) override fun lastIndexOf(element: Boolean): Int = this@asList.lastIndexOf(element) } } /** * Returns a [List] that wraps the original array. */ @kotlin.jvm.JvmVersion public fun CharArray.asList(): List { return object : AbstractList(), RandomAccess { override val size: Int get() = this@asList.size override fun isEmpty(): Boolean = this@asList.isEmpty() override fun contains(element: Char): Boolean = this@asList.contains(element) override fun get(index: Int): Char = this@asList[index] override fun indexOf(element: Char): Int = this@asList.indexOf(element) override fun lastIndexOf(element: Char): Int = this@asList.lastIndexOf(element) } } /** * Searches the array or the range of the array for the provided [element] using the binary search algorithm. * The array is expected to be sorted according to the specified [comparator], otherwise the result is undefined. * * If the array contains multiple elements equal to the specified [element], there is no guarantee which one will be found. * * @return the index of the element, if it is contained in the array within the specified range; * otherwise, the inverted insertion point `(-insertion point - 1)`. * The insertion point is defined as the index at which the element should be inserted, * so that the array (or the specified subrange of array) still remains sorted according to the specified [comparator]. */ @kotlin.jvm.JvmVersion public fun Array.binarySearch(element: T, comparator: Comparator, fromIndex: Int = 0, toIndex: Int = size): Int { return java.util.Arrays.binarySearch(this, fromIndex, toIndex, element, comparator) } /** * Searches the array or the range of the array for the provided [element] using the binary search algorithm. * The array is expected to be sorted, otherwise the result is undefined. * * If the array contains multiple elements equal to the specified [element], there is no guarantee which one will be found. * * @return the index of the element, if it is contained in the array within the specified range; * otherwise, the inverted insertion point `(-insertion point - 1)`. * The insertion point is defined as the index at which the element should be inserted, * so that the array (or the specified subrange of array) still remains sorted. */ @kotlin.jvm.JvmVersion public fun Array.binarySearch(element: T, fromIndex: Int = 0, toIndex: Int = size): Int { return java.util.Arrays.binarySearch(this, fromIndex, toIndex, element) } /** * Searches the array or the range of the array for the provided [element] using the binary search algorithm. * The array is expected to be sorted, otherwise the result is undefined. * * If the array contains multiple elements equal to the specified [element], there is no guarantee which one will be found. * * @return the index of the element, if it is contained in the array within the specified range; * otherwise, the inverted insertion point `(-insertion point - 1)`. * The insertion point is defined as the index at which the element should be inserted, * so that the array (or the specified subrange of array) still remains sorted. */ @kotlin.jvm.JvmVersion public fun ByteArray.binarySearch(element: Byte, fromIndex: Int = 0, toIndex: Int = size): Int { return java.util.Arrays.binarySearch(this, fromIndex, toIndex, element) } /** * Searches the array or the range of the array for the provided [element] using the binary search algorithm. * The array is expected to be sorted, otherwise the result is undefined. * * If the array contains multiple elements equal to the specified [element], there is no guarantee which one will be found. * * @return the index of the element, if it is contained in the array within the specified range; * otherwise, the inverted insertion point `(-insertion point - 1)`. * The insertion point is defined as the index at which the element should be inserted, * so that the array (or the specified subrange of array) still remains sorted. */ @kotlin.jvm.JvmVersion public fun ShortArray.binarySearch(element: Short, fromIndex: Int = 0, toIndex: Int = size): Int { return java.util.Arrays.binarySearch(this, fromIndex, toIndex, element) } /** * Searches the array or the range of the array for the provided [element] using the binary search algorithm. * The array is expected to be sorted, otherwise the result is undefined. * * If the array contains multiple elements equal to the specified [element], there is no guarantee which one will be found. * * @return the index of the element, if it is contained in the array within the specified range; * otherwise, the inverted insertion point `(-insertion point - 1)`. * The insertion point is defined as the index at which the element should be inserted, * so that the array (or the specified subrange of array) still remains sorted. */ @kotlin.jvm.JvmVersion public fun IntArray.binarySearch(element: Int, fromIndex: Int = 0, toIndex: Int = size): Int { return java.util.Arrays.binarySearch(this, fromIndex, toIndex, element) } /** * Searches the array or the range of the array for the provided [element] using the binary search algorithm. * The array is expected to be sorted, otherwise the result is undefined. * * If the array contains multiple elements equal to the specified [element], there is no guarantee which one will be found. * * @return the index of the element, if it is contained in the array within the specified range; * otherwise, the inverted insertion point `(-insertion point - 1)`. * The insertion point is defined as the index at which the element should be inserted, * so that the array (or the specified subrange of array) still remains sorted. */ @kotlin.jvm.JvmVersion public fun LongArray.binarySearch(element: Long, fromIndex: Int = 0, toIndex: Int = size): Int { return java.util.Arrays.binarySearch(this, fromIndex, toIndex, element) } /** * Searches the array or the range of the array for the provided [element] using the binary search algorithm. * The array is expected to be sorted, otherwise the result is undefined. * * If the array contains multiple elements equal to the specified [element], there is no guarantee which one will be found. * * @return the index of the element, if it is contained in the array within the specified range; * otherwise, the inverted insertion point `(-insertion point - 1)`. * The insertion point is defined as the index at which the element should be inserted, * so that the array (or the specified subrange of array) still remains sorted. */ @kotlin.jvm.JvmVersion public fun FloatArray.binarySearch(element: Float, fromIndex: Int = 0, toIndex: Int = size): Int { return java.util.Arrays.binarySearch(this, fromIndex, toIndex, element) } /** * Searches the array or the range of the array for the provided [element] using the binary search algorithm. * The array is expected to be sorted, otherwise the result is undefined. * * If the array contains multiple elements equal to the specified [element], there is no guarantee which one will be found. * * @return the index of the element, if it is contained in the array within the specified range; * otherwise, the inverted insertion point `(-insertion point - 1)`. * The insertion point is defined as the index at which the element should be inserted, * so that the array (or the specified subrange of array) still remains sorted. */ @kotlin.jvm.JvmVersion public fun DoubleArray.binarySearch(element: Double, fromIndex: Int = 0, toIndex: Int = size): Int { return java.util.Arrays.binarySearch(this, fromIndex, toIndex, element) } /** * Searches the array or the range of the array for the provided [element] using the binary search algorithm. * The array is expected to be sorted, otherwise the result is undefined. * * If the array contains multiple elements equal to the specified [element], there is no guarantee which one will be found. * * @return the index of the element, if it is contained in the array within the specified range; * otherwise, the inverted insertion point `(-insertion point - 1)`. * The insertion point is defined as the index at which the element should be inserted, * so that the array (or the specified subrange of array) still remains sorted. */ @kotlin.jvm.JvmVersion public fun CharArray.binarySearch(element: Char, fromIndex: Int = 0, toIndex: Int = size): Int { return java.util.Arrays.binarySearch(this, fromIndex, toIndex, element) } /** * Returns new array which is a copy of the original array. */ @kotlin.jvm.JvmVersion @kotlin.internal.InlineOnly public inline fun Array.copyOf(): Array { return java.util.Arrays.copyOf(this, size) } /** * Returns new array which is a copy of the original array. */ @kotlin.jvm.JvmVersion @kotlin.internal.InlineOnly public inline fun ByteArray.copyOf(): ByteArray { return java.util.Arrays.copyOf(this, size) } /** * Returns new array which is a copy of the original array. */ @kotlin.jvm.JvmVersion @kotlin.internal.InlineOnly public inline fun ShortArray.copyOf(): ShortArray { return java.util.Arrays.copyOf(this, size) } /** * Returns new array which is a copy of the original array. */ @kotlin.jvm.JvmVersion @kotlin.internal.InlineOnly public inline fun IntArray.copyOf(): IntArray { return java.util.Arrays.copyOf(this, size) } /** * Returns new array which is a copy of the original array. */ @kotlin.jvm.JvmVersion @kotlin.internal.InlineOnly public inline fun LongArray.copyOf(): LongArray { return java.util.Arrays.copyOf(this, size) } /** * Returns new array which is a copy of the original array. */ @kotlin.jvm.JvmVersion @kotlin.internal.InlineOnly public inline fun FloatArray.copyOf(): FloatArray { return java.util.Arrays.copyOf(this, size) } /** * Returns new array which is a copy of the original array. */ @kotlin.jvm.JvmVersion @kotlin.internal.InlineOnly public inline fun DoubleArray.copyOf(): DoubleArray { return java.util.Arrays.copyOf(this, size) } /** * Returns new array which is a copy of the original array. */ @kotlin.jvm.JvmVersion @kotlin.internal.InlineOnly public inline fun BooleanArray.copyOf(): BooleanArray { return java.util.Arrays.copyOf(this, size) } /** * Returns new array which is a copy of the original array. */ @kotlin.jvm.JvmVersion @kotlin.internal.InlineOnly public inline fun CharArray.copyOf(): CharArray { return java.util.Arrays.copyOf(this, size) } /** * Returns new array which is a copy of the original array. */ @kotlin.jvm.JvmVersion @kotlin.internal.InlineOnly public inline fun Array.copyOf(newSize: Int): Array { return java.util.Arrays.copyOf(this, newSize) } /** * Returns new array which is a copy of the original array. */ @kotlin.jvm.JvmVersion @kotlin.internal.InlineOnly public inline fun ByteArray.copyOf(newSize: Int): ByteArray { return java.util.Arrays.copyOf(this, newSize) } /** * Returns new array which is a copy of the original array. */ @kotlin.jvm.JvmVersion @kotlin.internal.InlineOnly public inline fun ShortArray.copyOf(newSize: Int): ShortArray { return java.util.Arrays.copyOf(this, newSize) } /** * Returns new array which is a copy of the original array. */ @kotlin.jvm.JvmVersion @kotlin.internal.InlineOnly public inline fun IntArray.copyOf(newSize: Int): IntArray { return java.util.Arrays.copyOf(this, newSize) } /** * Returns new array which is a copy of the original array. */ @kotlin.jvm.JvmVersion @kotlin.internal.InlineOnly public inline fun LongArray.copyOf(newSize: Int): LongArray { return java.util.Arrays.copyOf(this, newSize) } /** * Returns new array which is a copy of the original array. */ @kotlin.jvm.JvmVersion @kotlin.internal.InlineOnly public inline fun FloatArray.copyOf(newSize: Int): FloatArray { return java.util.Arrays.copyOf(this, newSize) } /** * Returns new array which is a copy of the original array. */ @kotlin.jvm.JvmVersion @kotlin.internal.InlineOnly public inline fun DoubleArray.copyOf(newSize: Int): DoubleArray { return java.util.Arrays.copyOf(this, newSize) } /** * Returns new array which is a copy of the original array. */ @kotlin.jvm.JvmVersion @kotlin.internal.InlineOnly public inline fun BooleanArray.copyOf(newSize: Int): BooleanArray { return java.util.Arrays.copyOf(this, newSize) } /** * Returns new array which is a copy of the original array. */ @kotlin.jvm.JvmVersion @kotlin.internal.InlineOnly public inline fun CharArray.copyOf(newSize: Int): CharArray { return java.util.Arrays.copyOf(this, newSize) } /** * Returns new array which is a copy of range of original array. */ @kotlin.jvm.JvmVersion @kotlin.internal.InlineOnly public inline fun Array.copyOfRange(fromIndex: Int, toIndex: Int): Array { return java.util.Arrays.copyOfRange(this, fromIndex, toIndex) } /** * Returns new array which is a copy of range of original array. */ @kotlin.jvm.JvmVersion @kotlin.internal.InlineOnly public inline fun ByteArray.copyOfRange(fromIndex: Int, toIndex: Int): ByteArray { return java.util.Arrays.copyOfRange(this, fromIndex, toIndex) } /** * Returns new array which is a copy of range of original array. */ @kotlin.jvm.JvmVersion @kotlin.internal.InlineOnly public inline fun ShortArray.copyOfRange(fromIndex: Int, toIndex: Int): ShortArray { return java.util.Arrays.copyOfRange(this, fromIndex, toIndex) } /** * Returns new array which is a copy of range of original array. */ @kotlin.jvm.JvmVersion @kotlin.internal.InlineOnly public inline fun IntArray.copyOfRange(fromIndex: Int, toIndex: Int): IntArray { return java.util.Arrays.copyOfRange(this, fromIndex, toIndex) } /** * Returns new array which is a copy of range of original array. */ @kotlin.jvm.JvmVersion @kotlin.internal.InlineOnly public inline fun LongArray.copyOfRange(fromIndex: Int, toIndex: Int): LongArray { return java.util.Arrays.copyOfRange(this, fromIndex, toIndex) } /** * Returns new array which is a copy of range of original array. */ @kotlin.jvm.JvmVersion @kotlin.internal.InlineOnly public inline fun FloatArray.copyOfRange(fromIndex: Int, toIndex: Int): FloatArray { return java.util.Arrays.copyOfRange(this, fromIndex, toIndex) } /** * Returns new array which is a copy of range of original array. */ @kotlin.jvm.JvmVersion @kotlin.internal.InlineOnly public inline fun DoubleArray.copyOfRange(fromIndex: Int, toIndex: Int): DoubleArray { return java.util.Arrays.copyOfRange(this, fromIndex, toIndex) } /** * Returns new array which is a copy of range of original array. */ @kotlin.jvm.JvmVersion @kotlin.internal.InlineOnly public inline fun BooleanArray.copyOfRange(fromIndex: Int, toIndex: Int): BooleanArray { return java.util.Arrays.copyOfRange(this, fromIndex, toIndex) } /** * Returns new array which is a copy of range of original array. */ @kotlin.jvm.JvmVersion @kotlin.internal.InlineOnly public inline fun CharArray.copyOfRange(fromIndex: Int, toIndex: Int): CharArray { return java.util.Arrays.copyOfRange(this, fromIndex, toIndex) } /** * Fills original array with the provided value. */ @kotlin.jvm.JvmVersion public fun Array.fill(element: T, fromIndex: Int = 0, toIndex: Int = size): Unit { java.util.Arrays.fill(this, fromIndex, toIndex, element) } /** * Fills original array with the provided value. */ @kotlin.jvm.JvmVersion public fun ByteArray.fill(element: Byte, fromIndex: Int = 0, toIndex: Int = size): Unit { java.util.Arrays.fill(this, fromIndex, toIndex, element) } /** * Fills original array with the provided value. */ @kotlin.jvm.JvmVersion public fun ShortArray.fill(element: Short, fromIndex: Int = 0, toIndex: Int = size): Unit { java.util.Arrays.fill(this, fromIndex, toIndex, element) } /** * Fills original array with the provided value. */ @kotlin.jvm.JvmVersion public fun IntArray.fill(element: Int, fromIndex: Int = 0, toIndex: Int = size): Unit { java.util.Arrays.fill(this, fromIndex, toIndex, element) } /** * Fills original array with the provided value. */ @kotlin.jvm.JvmVersion public fun LongArray.fill(element: Long, fromIndex: Int = 0, toIndex: Int = size): Unit { java.util.Arrays.fill(this, fromIndex, toIndex, element) } /** * Fills original array with the provided value. */ @kotlin.jvm.JvmVersion public fun FloatArray.fill(element: Float, fromIndex: Int = 0, toIndex: Int = size): Unit { java.util.Arrays.fill(this, fromIndex, toIndex, element) } /** * Fills original array with the provided value. */ @kotlin.jvm.JvmVersion public fun DoubleArray.fill(element: Double, fromIndex: Int = 0, toIndex: Int = size): Unit { java.util.Arrays.fill(this, fromIndex, toIndex, element) } /** * Fills original array with the provided value. */ @kotlin.jvm.JvmVersion public fun BooleanArray.fill(element: Boolean, fromIndex: Int = 0, toIndex: Int = size): Unit { java.util.Arrays.fill(this, fromIndex, toIndex, element) } /** * Fills original array with the provided value. */ @kotlin.jvm.JvmVersion public fun CharArray.fill(element: Char, fromIndex: Int = 0, toIndex: Int = size): Unit { java.util.Arrays.fill(this, fromIndex, toIndex, element) } /** * Returns a list containing all elements that are instances of specified class. */ @kotlin.jvm.JvmVersion public fun Array<*>.filterIsInstance(klass: Class): List { return filterIsInstanceTo(ArrayList(), klass) } /** * Appends all elements that are instances of specified class to the given [destination]. */ @kotlin.jvm.JvmVersion public fun , R> Array<*>.filterIsInstanceTo(destination: C, klass: Class): C { @Suppress("UNCHECKED_CAST") for (element in this) if (klass.isInstance(element)) destination.add(element as R) return destination } /** * Returns an array containing all elements of the original array and then the given [element]. */ @kotlin.jvm.JvmVersion public operator fun Array.plus(element: T): Array { val index = size val result = java.util.Arrays.copyOf(this, index + 1) result[index] = element return result } /** * Returns an array containing all elements of the original array and then the given [element]. */ @kotlin.jvm.JvmVersion public operator fun ByteArray.plus(element: Byte): ByteArray { val index = size val result = java.util.Arrays.copyOf(this, index + 1) result[index] = element return result } /** * Returns an array containing all elements of the original array and then the given [element]. */ @kotlin.jvm.JvmVersion public operator fun ShortArray.plus(element: Short): ShortArray { val index = size val result = java.util.Arrays.copyOf(this, index + 1) result[index] = element return result } /** * Returns an array containing all elements of the original array and then the given [element]. */ @kotlin.jvm.JvmVersion public operator fun IntArray.plus(element: Int): IntArray { val index = size val result = java.util.Arrays.copyOf(this, index + 1) result[index] = element return result } /** * Returns an array containing all elements of the original array and then the given [element]. */ @kotlin.jvm.JvmVersion public operator fun LongArray.plus(element: Long): LongArray { val index = size val result = java.util.Arrays.copyOf(this, index + 1) result[index] = element return result } /** * Returns an array containing all elements of the original array and then the given [element]. */ @kotlin.jvm.JvmVersion public operator fun FloatArray.plus(element: Float): FloatArray { val index = size val result = java.util.Arrays.copyOf(this, index + 1) result[index] = element return result } /** * Returns an array containing all elements of the original array and then the given [element]. */ @kotlin.jvm.JvmVersion public operator fun DoubleArray.plus(element: Double): DoubleArray { val index = size val result = java.util.Arrays.copyOf(this, index + 1) result[index] = element return result } /** * Returns an array containing all elements of the original array and then the given [element]. */ @kotlin.jvm.JvmVersion public operator fun BooleanArray.plus(element: Boolean): BooleanArray { val index = size val result = java.util.Arrays.copyOf(this, index + 1) result[index] = element return result } /** * Returns an array containing all elements of the original array and then the given [element]. */ @kotlin.jvm.JvmVersion public operator fun CharArray.plus(element: Char): CharArray { val index = size val result = java.util.Arrays.copyOf(this, index + 1) result[index] = element return result } /** * Returns an array containing all elements of the original array and then all elements of the given [elements] collection. */ @kotlin.jvm.JvmVersion public operator fun Array.plus(elements: Collection): Array { var index = size val result = java.util.Arrays.copyOf(this, index + elements.size) for (element in elements) result[index++] = element return result } /** * Returns an array containing all elements of the original array and then all elements of the given [elements] collection. */ @kotlin.jvm.JvmVersion public operator fun ByteArray.plus(elements: Collection): ByteArray { var index = size val result = java.util.Arrays.copyOf(this, index + elements.size) for (element in elements) result[index++] = element return result } /** * Returns an array containing all elements of the original array and then all elements of the given [elements] collection. */ @kotlin.jvm.JvmVersion public operator fun ShortArray.plus(elements: Collection): ShortArray { var index = size val result = java.util.Arrays.copyOf(this, index + elements.size) for (element in elements) result[index++] = element return result } /** * Returns an array containing all elements of the original array and then all elements of the given [elements] collection. */ @kotlin.jvm.JvmVersion public operator fun IntArray.plus(elements: Collection): IntArray { var index = size val result = java.util.Arrays.copyOf(this, index + elements.size) for (element in elements) result[index++] = element return result } /** * Returns an array containing all elements of the original array and then all elements of the given [elements] collection. */ @kotlin.jvm.JvmVersion public operator fun LongArray.plus(elements: Collection): LongArray { var index = size val result = java.util.Arrays.copyOf(this, index + elements.size) for (element in elements) result[index++] = element return result } /** * Returns an array containing all elements of the original array and then all elements of the given [elements] collection. */ @kotlin.jvm.JvmVersion public operator fun FloatArray.plus(elements: Collection): FloatArray { var index = size val result = java.util.Arrays.copyOf(this, index + elements.size) for (element in elements) result[index++] = element return result } /** * Returns an array containing all elements of the original array and then all elements of the given [elements] collection. */ @kotlin.jvm.JvmVersion public operator fun DoubleArray.plus(elements: Collection): DoubleArray { var index = size val result = java.util.Arrays.copyOf(this, index + elements.size) for (element in elements) result[index++] = element return result } /** * Returns an array containing all elements of the original array and then all elements of the given [elements] collection. */ @kotlin.jvm.JvmVersion public operator fun BooleanArray.plus(elements: Collection): BooleanArray { var index = size val result = java.util.Arrays.copyOf(this, index + elements.size) for (element in elements) result[index++] = element return result } /** * Returns an array containing all elements of the original array and then all elements of the given [elements] collection. */ @kotlin.jvm.JvmVersion public operator fun CharArray.plus(elements: Collection): CharArray { var index = size val result = java.util.Arrays.copyOf(this, index + elements.size) for (element in elements) result[index++] = element return result } /** * Returns an array containing all elements of the original array and then all elements of the given [elements] array. */ @kotlin.jvm.JvmVersion public operator fun Array.plus(elements: Array): Array { val thisSize = size val arraySize = elements.size val result = java.util.Arrays.copyOf(this, thisSize + arraySize) System.arraycopy(elements, 0, result, thisSize, arraySize) return result } /** * Returns an array containing all elements of the original array and then all elements of the given [elements] array. */ @kotlin.jvm.JvmVersion public operator fun ByteArray.plus(elements: ByteArray): ByteArray { val thisSize = size val arraySize = elements.size val result = java.util.Arrays.copyOf(this, thisSize + arraySize) System.arraycopy(elements, 0, result, thisSize, arraySize) return result } /** * Returns an array containing all elements of the original array and then all elements of the given [elements] array. */ @kotlin.jvm.JvmVersion public operator fun ShortArray.plus(elements: ShortArray): ShortArray { val thisSize = size val arraySize = elements.size val result = java.util.Arrays.copyOf(this, thisSize + arraySize) System.arraycopy(elements, 0, result, thisSize, arraySize) return result } /** * Returns an array containing all elements of the original array and then all elements of the given [elements] array. */ @kotlin.jvm.JvmVersion public operator fun IntArray.plus(elements: IntArray): IntArray { val thisSize = size val arraySize = elements.size val result = java.util.Arrays.copyOf(this, thisSize + arraySize) System.arraycopy(elements, 0, result, thisSize, arraySize) return result } /** * Returns an array containing all elements of the original array and then all elements of the given [elements] array. */ @kotlin.jvm.JvmVersion public operator fun LongArray.plus(elements: LongArray): LongArray { val thisSize = size val arraySize = elements.size val result = java.util.Arrays.copyOf(this, thisSize + arraySize) System.arraycopy(elements, 0, result, thisSize, arraySize) return result } /** * Returns an array containing all elements of the original array and then all elements of the given [elements] array. */ @kotlin.jvm.JvmVersion public operator fun FloatArray.plus(elements: FloatArray): FloatArray { val thisSize = size val arraySize = elements.size val result = java.util.Arrays.copyOf(this, thisSize + arraySize) System.arraycopy(elements, 0, result, thisSize, arraySize) return result } /** * Returns an array containing all elements of the original array and then all elements of the given [elements] array. */ @kotlin.jvm.JvmVersion public operator fun DoubleArray.plus(elements: DoubleArray): DoubleArray { val thisSize = size val arraySize = elements.size val result = java.util.Arrays.copyOf(this, thisSize + arraySize) System.arraycopy(elements, 0, result, thisSize, arraySize) return result } /** * Returns an array containing all elements of the original array and then all elements of the given [elements] array. */ @kotlin.jvm.JvmVersion public operator fun BooleanArray.plus(elements: BooleanArray): BooleanArray { val thisSize = size val arraySize = elements.size val result = java.util.Arrays.copyOf(this, thisSize + arraySize) System.arraycopy(elements, 0, result, thisSize, arraySize) return result } /** * Returns an array containing all elements of the original array and then all elements of the given [elements] array. */ @kotlin.jvm.JvmVersion public operator fun CharArray.plus(elements: CharArray): CharArray { val thisSize = size val arraySize = elements.size val result = java.util.Arrays.copyOf(this, thisSize + arraySize) System.arraycopy(elements, 0, result, thisSize, arraySize) return result } /** * Returns an array containing all elements of the original array and then the given [element]. */ @kotlin.jvm.JvmVersion @kotlin.internal.InlineOnly public inline fun Array.plusElement(element: T): Array { return plus(element) } /** * Sorts the array in-place. */ @kotlin.jvm.JvmVersion public fun Array.sort(): Unit { if (size > 1) java.util.Arrays.sort(this) } /** * Sorts the array in-place. */ @kotlin.jvm.JvmVersion public fun ByteArray.sort(): Unit { if (size > 1) java.util.Arrays.sort(this) } /** * Sorts the array in-place. */ @kotlin.jvm.JvmVersion public fun ShortArray.sort(): Unit { if (size > 1) java.util.Arrays.sort(this) } /** * Sorts the array in-place. */ @kotlin.jvm.JvmVersion public fun IntArray.sort(): Unit { if (size > 1) java.util.Arrays.sort(this) } /** * Sorts the array in-place. */ @kotlin.jvm.JvmVersion public fun LongArray.sort(): Unit { if (size > 1) java.util.Arrays.sort(this) } /** * Sorts the array in-place. */ @kotlin.jvm.JvmVersion public fun FloatArray.sort(): Unit { if (size > 1) java.util.Arrays.sort(this) } /** * Sorts the array in-place. */ @kotlin.jvm.JvmVersion public fun DoubleArray.sort(): Unit { if (size > 1) java.util.Arrays.sort(this) } /** * Sorts the array in-place. */ @kotlin.jvm.JvmVersion public fun CharArray.sort(): Unit { if (size > 1) java.util.Arrays.sort(this) } /** * Sorts a range in the array in-place. */ @kotlin.jvm.JvmVersion public fun Array.sort(fromIndex: Int = 0, toIndex: Int = size): Unit { java.util.Arrays.sort(this, fromIndex, toIndex) } /** * Sorts a range in the array in-place. */ @kotlin.jvm.JvmVersion public fun ByteArray.sort(fromIndex: Int = 0, toIndex: Int = size): Unit { java.util.Arrays.sort(this, fromIndex, toIndex) } /** * Sorts a range in the array in-place. */ @kotlin.jvm.JvmVersion public fun ShortArray.sort(fromIndex: Int = 0, toIndex: Int = size): Unit { java.util.Arrays.sort(this, fromIndex, toIndex) } /** * Sorts a range in the array in-place. */ @kotlin.jvm.JvmVersion public fun IntArray.sort(fromIndex: Int = 0, toIndex: Int = size): Unit { java.util.Arrays.sort(this, fromIndex, toIndex) } /** * Sorts a range in the array in-place. */ @kotlin.jvm.JvmVersion public fun LongArray.sort(fromIndex: Int = 0, toIndex: Int = size): Unit { java.util.Arrays.sort(this, fromIndex, toIndex) } /** * Sorts a range in the array in-place. */ @kotlin.jvm.JvmVersion public fun FloatArray.sort(fromIndex: Int = 0, toIndex: Int = size): Unit { java.util.Arrays.sort(this, fromIndex, toIndex) } /** * Sorts a range in the array in-place. */ @kotlin.jvm.JvmVersion public fun DoubleArray.sort(fromIndex: Int = 0, toIndex: Int = size): Unit { java.util.Arrays.sort(this, fromIndex, toIndex) } /** * Sorts a range in the array in-place. */ @kotlin.jvm.JvmVersion public fun CharArray.sort(fromIndex: Int = 0, toIndex: Int = size): Unit { java.util.Arrays.sort(this, fromIndex, toIndex) } /** * Sorts the array in-place with the given [comparator]. */ @kotlin.jvm.JvmVersion public fun Array.sortWith(comparator: Comparator): Unit { if (size > 1) java.util.Arrays.sort(this, comparator) } /** * Sorts a range in the array in-place with the given [comparator]. */ @kotlin.jvm.JvmVersion public fun Array.sortWith(comparator: Comparator, fromIndex: Int = 0, toIndex: Int = size): Unit { java.util.Arrays.sort(this, fromIndex, toIndex, comparator) } /** * Returns a *typed* object array containing all of the elements of this primitive array. */ @kotlin.jvm.JvmVersion public fun ByteArray.toTypedArray(): Array { val result = arrayOfNulls(size) for (index in indices) result[index] = this[index] @Suppress("UNCHECKED_CAST") return result as Array } /** * Returns a *typed* object array containing all of the elements of this primitive array. */ @kotlin.jvm.JvmVersion public fun ShortArray.toTypedArray(): Array { val result = arrayOfNulls(size) for (index in indices) result[index] = this[index] @Suppress("UNCHECKED_CAST") return result as Array } /** * Returns a *typed* object array containing all of the elements of this primitive array. */ @kotlin.jvm.JvmVersion public fun IntArray.toTypedArray(): Array { val result = arrayOfNulls(size) for (index in indices) result[index] = this[index] @Suppress("UNCHECKED_CAST") return result as Array } /** * Returns a *typed* object array containing all of the elements of this primitive array. */ @kotlin.jvm.JvmVersion public fun LongArray.toTypedArray(): Array { val result = arrayOfNulls(size) for (index in indices) result[index] = this[index] @Suppress("UNCHECKED_CAST") return result as Array } /** * Returns a *typed* object array containing all of the elements of this primitive array. */ @kotlin.jvm.JvmVersion public fun FloatArray.toTypedArray(): Array { val result = arrayOfNulls(size) for (index in indices) result[index] = this[index] @Suppress("UNCHECKED_CAST") return result as Array } /** * Returns a *typed* object array containing all of the elements of this primitive array. */ @kotlin.jvm.JvmVersion public fun DoubleArray.toTypedArray(): Array { val result = arrayOfNulls(size) for (index in indices) result[index] = this[index] @Suppress("UNCHECKED_CAST") return result as Array } /** * Returns a *typed* object array containing all of the elements of this primitive array. */ @kotlin.jvm.JvmVersion public fun BooleanArray.toTypedArray(): Array { val result = arrayOfNulls(size) for (index in indices) result[index] = this[index] @Suppress("UNCHECKED_CAST") return result as Array } /** * Returns a *typed* object array containing all of the elements of this primitive array. */ @kotlin.jvm.JvmVersion public fun CharArray.toTypedArray(): Array { val result = arrayOfNulls(size) for (index in indices) result[index] = this[index] @Suppress("UNCHECKED_CAST") return result as Array } /** * 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 += 1 } return if (count == 0) 0.0 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 += 1 } return if (count == 0) 0.0 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 += 1 } return if (count == 0) 0.0 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 += 1 } return if (count == 0) 0.0 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 += 1 } return if (count == 0) 0.0 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 += 1 } return if (count == 0) 0.0 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 += 1 } return if (count == 0) 0.0 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 += 1 } return if (count == 0) 0.0 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 += 1 } return if (count == 0) 0.0 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 += 1 } return if (count == 0) 0.0 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 += 1 } return if (count == 0) 0.0 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 += 1 } return if (count == 0) 0.0 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 }