KOTLIN cheat sheet – IT Blog
IT Blog
Boris IT Expert

KOTLIN cheat sheet

Boris~June 12, 2019 /Uncategorized
//An entry point to a Kotlin application is the main function. In Kotlin 1.3, you can declare main without any parameters. The return type is not specified, which means that the function returns nothing. 

fun main() {                         

//println writes a line to the standard output. It is imported implicitly. Also note that semicolons are optional. 

    println("Hello, World!")         

} 

 

Default Parameter Values and Named Arguments 

//A simple function that takes a parameter of type String and returns Unit (i.e., no return value) 

fun printMessage(message: String): Unit {                                

    println(message) 

} 

 //A function that takes a second optional parameter with default value Info. The return type is omitted, meaning that it's actually Unit 

fun printMessageWithPrefix(message: String, prefix: String = "Info") {   

    println("[$prefix] $message") 

} 

 //A function that returns an integer 

fun sum(x: Int, y: Int): Int {                                           

    return x + y 

} 

 //A single-expression function that returns an integer (inferred) 

fun multiply(x: Int, y: Int) = x * y                                    

  

fun main() { 

//Calls the first function with the argument Hello 

    printMessage("Hello")      

//Calls the function with two parameters, passing values for both of them                   

    printMessageWithPrefix("Hello", "Log")           

//Calls the same function omitting the second one. The default value Info is used        

    printMessageWithPrefix("Hello")                                     

//Calls the same function using named arguments and changing the order of the arguments 

    printMessageWithPrefix(prefix = "Log", message = "Hello")            

//Prints the result of a function call 

    println(sum(1, 2))                                                   

} 

 

Infix Functions 

fun main() { 

 //Defines an infix extension function on Int 

  infix fun Int.times(str: String) = str.repeat(this)     

     

//Calls the infix function 

// RESULT: Bye Bye 

  println(2 times "Bye ")                               

       

 //Creates a Pair by calling the infix function to from the standard library 

  val pair = "Ferrari" to "Katrina"                           

// RESULT: (Ferrari, Katrina) 

  println(pair) 

  

//Here's your own implementation of to creatively called onto 

  infix fun String.onto(other: String) = Pair(this, other)    

  val myPair = "McLaren" onto "Lucas" 

// RESULT: (McLaren, Lucas) 

  println(myPair) 

  

  val sophia = Person("Sophia") 

  val claudia = Person("Claudia") 

//Infix notation also works on members functions (methods) 

  sophia likes claudia                                        

} 

  

class Person(val name: String) { 

  val likedPeople = mutableListOf<Person>() 

//The containing class becomes the first parameter 

  infix fun likes(other: Person) { likedPeople.add(other) }   

} 

Strings
// Loop through String
for (c in str) {
  println(c)
}

// Variable in string example
val i = 10
val s = "i = $i" // evaluates to "i = 10"

val s = "abc"
val str = "$s.length is ${s.length}" // evaluates to "abc.length is 3"

// Show $ symbol in string
val price = "${'$'}9.99"

Constructors - If class is a model so we need to use 'data' word before 'class'
// Default near class name 
class Person(firstName: String)

//Regular class with constructor and getter and setter
data class Person(val name:String, val age: Int)

// Initialization of the value 1st variant
class Customer(name: String) {
    val customerKey = name.toUpperCase()
}
// Initialization of the value 2nd variant
class Person(val firstName: String, val lastName: String, var age: Int) {
  // ...
}
// If there are any annotations for class. Need 'constructor' text
class Customer public @Inject constructor(name: String) { ... }
//If there are several constructors 
class Person(val name: String) {
    constructor(name: String, parent: Person) : this(name) {
        parent.children.add(this)
    }
}

Nullable / Check on Nullable
// Example of checking on null if/else condition
mutableVar.let { if (it != null) doSomething(it) else doOtherThing() }

Operators
// Let Example
item?.let { println(it) }
// is example
if (obj is String) {
    print(obj.length)
}
when (x) {
    is Int -> print(x + 1)
    is String -> print(x.length + 1)
    is IntArray -> print(x.sum())
}

Extensions - Kotlin top-level extension function are compiled as Java static methods
// Extension example
fun <T> List<T>.midElement(): T {
    if (isEmpty())
        throw NoSuchElementException("List is empty.")
    return this[size / 2]
}
var arrayList = arrayListOf(5, 4, 3, 2, 1)
var mid = arrayList.midElement()




//Elvis Operator
val l = b?.length ?: -1
val parent = node.getParent() ?: return null
val name = node.getName() ?: throw IllegalArgumentException("name expected")

Object expressions
// Companion object inside class
class MyClass {
    companion object Factory {
        fun create(): MyClass = MyClass()
    }
}
//Instance of companion
val instance = MyClass.create()
//Companion without name of the object
class MyClass {
    companion object {
    }
}
val x = MyClass.Companion

Call methods
// Getters and setters from Java 
fun calendarDemo() {
    val calendar = Calendar.getInstance()
    if (calendar.firstDayOfWeek == Calendar.SUNDAY) {  // call getFirstDayOfWeek()
        calendar.firstDayOfWeek = Calendar.MONDAY      // call setFirstDayOfWeek()
    }
    if (!calendar.isLenient) {                         // call isLenient()
        calendar.isLenient = true                      // call setLenient()
    }
}

<init>
Creates a new array with the specified size, where each element is calculated by calling the specified init function. The init function returns an array element given its index.
<init>(size: Int, init: (Int) -> T)

size
Returns the number of elements in the array.
val size: Int

get
Returns the array element at the specified index. This method can be called using the index operator.
operator fun get(index: Int): T

iterator
Creates an iterator for iterating over the elements of the array.
operator fun iterator(): Iterator<T>

set
Sets the array element at the specified index to the specified value. This method can be called using the index operator.
operator fun set(index: Int, value: T)

indices
Returns the range of valid indices for the array.
val <T> Array<out T>.indices: IntRange

lastIndex
Returns the last valid index for the array.
val <T> Array<out T>.lastIndex: Int

Extension Functions
all
Returns true if all elements match the given predicate.
fun <T> Array<out T>.all(predicate: (T) -> Boolean): Boolean

any
Returns true if array has at least one element.
fun <T> Array<out T>.any(): Boolean
Returns true if at least one element matches the given predicate.
fun <T> Array<out T>.any(predicate: (T) -> Boolean): Boolean

asIterable
Creates an Iterable instance that wraps the original array returning its elements when being iterated.
fun <T> Array<out T>.asIterable(): Iterable<T>

asSequence
Creates a Sequence instance that wraps the original array returning its elements when being iterated.
fun <T> Array<out T>.asSequence(): Sequence<T>

associate
Returns a Map containing key-value pairs provided by transform function applied to elements of the given array.
fun <T, K, V> Array<out T>.associate(transform: (T) -> Pair<K, V>): Map<K, V>

associateBy
Returns a Map containing the elements from the given array indexed by the key returned from keySelector function applied to each element.
fun <T, K> Array<out T>.associateBy(keySelector: (T) -> K): Map<K, T>
Returns a Map containing the values provided by valueTransform and indexed by keySelector functions applied to elements of the given array.
fun <T, K, V> Array<out T>.associateBy(
    keySelector: (T) -> K, 
    valueTransform: (T) -> V): Map<K, V>

associateByTo
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.
fun <T, K, M : MutableMap<in K, in T>> Array<out T>.associateByTo(
    destination: M, 
    keySelector: (T) -> K): M
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.
fun <T, K, V, M : MutableMap<in K, in V>> Array<out T>.associateByTo(
    destination: M, 
    keySelector: (T) -> K, 
    valueTransform: (T) -> V): M

associateTo
Populates and returns the destination mutable map with key-value pairs provided by transform function applied to each element of the given array.
fun <T, K, V, M : MutableMap<in K, in V>> Array<out T>.associateTo(
    destination: M, 
    transform: (T) -> Pair<K, V>): M

average
Returns an average value of elements in the array.
fun Array<out Byte>.average(): Double
fun Array<out Short>.average(): Double
fun Array<out Int>.average(): Double
fun Array<out Long>.average(): Double
fun Array<out Float>.average(): Double
fun Array<out Double>.average(): Double

binarySearch
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.
fun <T> Array<out T>.binarySearch(
    element: T, 
    comparator: Comparator<in T>, 
    fromIndex: Int = 0, 
    toIndex: Int = size): Int
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.
fun <T> Array<out T>.binarySearch(
    element: T, 
    fromIndex: Int = 0, 
    toIndex: Int = size): Int

component1
Returns 1st element from the collection.
operator fun <T> Array<out T>.component1(): T

component2
Returns 2nd element from the collection.
operator fun <T> Array<out T>.component2(): T

component3
Returns 3rd element from the collection.
operator fun <T> Array<out T>.component3(): T

component4
Returns 4th element from the collection.
operator fun <T> Array<out T>.component4(): T

component5
Returns 5th element from the collection.
operator fun <T> Array<out T>.component5(): T

contains
Returns true if element is found in the array.
operator fun <T> Array<out T>.contains(element: T): Boolean

count
Returns the number of elements in this array.
fun <T> Array<out T>.count(): Int
Returns the number of elements matching the given predicate.
fun <T> Array<out T>.count(predicate: (T) -> Boolean): Int

distinct
Returns a list containing only distinct elements from the given array.
fun <T> Array<out T>.distinct(): List<T>

distinctBy
Returns a list containing only elements from the given array having distinct keys returned by the given selector function.
fun <T, K> Array<out T>.distinctBy(selector: (T) -> K): List<T>

drop
Returns a list containing all elements except first n elements.
fun <T> Array<out T>.drop(n: Int): List<T>

dropLast
Returns a list containing all elements except last n elements.
fun <T> Array<out T>.dropLast(n: Int): List<T>

dropLastWhile
Returns a list containing all elements except last elements that satisfy the given predicate.
fun <T> Array<out T>.dropLastWhile(predicate: (T) -> Boolean): List<T>

dropWhile
Returns a list containing all elements except first elements that satisfy the given predicate.
fun <T> Array<out T>.dropWhile(predicate: (T) -> Boolean): List<T>

elementAtOrElse
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.
fun <T> Array<out T>.elementAtOrElse(
    index: Int, 
    defaultValue: (Int) -> T): T

elementAtOrNull
Returns an element at the given index or null if the index is out of bounds of this array.
fun <T> Array<out T>.elementAtOrNull(index: Int): T?

fill
Fills original array with the provided value.
fun <T> Array<T>.fill(
    element: T, 
    fromIndex: Int = 0, 
    toIndex: Int = size)

filter
Returns a list containing only elements matching the given predicate.
fun <T> Array<out T>.filter(predicate: (T) -> Boolean): List<T>

filterIndexed
Returns a list containing only elements matching the given predicate.
fun <T> Array<out T>.filterIndexed(predicate: (index: Int, T) -> Boolean): List<T>

filterIndexedTo
Appends all elements matching the given predicate to the given destination.
fun <T, C : MutableCollection<in T>> Array<out T>.filterIndexedTo(
    destination: C, 
    predicate: (index: Int, T) -> Boolean): C
	
filterIsInstance
Returns a list containing all elements that are instances of specified type parameter R.
fun <R> Array<*>.filterIsInstance(): List<R>
Returns a list containing all elements that are instances of specified class.
fun <R> Array<*>.filterIsInstance(klass: Class<R>): List<R>

filterIsInstanceTo
Appends all elements that are instances of specified type parameter R to the given destination.
fun <R, C : MutableCollection<in R>> Array<*>.filterIsInstanceTo(destination: C): C
Appends all elements that are instances of specified class to the given destination.
fun <C : MutableCollection<in R>, R> Array<*>.filterIsInstanceTo(
    destination: C, 
    klass: Class<R>): C

filterNot
Returns a list containing all elements not matching the given predicate.
fun <T> Array<out T>.filterNot(predicate: (T) -> Boolean): List<T>

filterNotNull
Returns a list containing all elements that are not null.
fun <T : Any> Array<out T?>.filterNotNull(): List<T>

filterNotNullTo
Appends all elements that are not null to the given destination.
fun <C : MutableCollection<in T>, T : Any> Array<out T?>.filterNotNullTo(destination: C): C

filterNotTo
Appends all elements not matching the given predicate to the given destination.
fun <T, C : MutableCollection<in T>> Array<out T>.filterNotTo(
    destination: C, 
    predicate: (T) -> Boolean): C

filterTo
Appends all elements matching the given predicate to the given destination.
fun <T, C : MutableCollection<in T>> Array<out T>.filterTo(
    destination: C, 
    predicate: (T) -> Boolean): C

find
Returns the first element matching the given predicate, or null if no such element was found.
fun <T> Array<out T>.find(predicate: (T) -> Boolean): T?

findLast
Returns the last element matching the given predicate, or null if no such element was found.
fun <T> Array<out T>.findLast(predicate: (T) -> Boolean): T?

first
Returns first element.
fun <T> Array<out T>.first(): T
Returns the first element matching the given predicate.
fun <T> Array<out T>.first(predicate: (T) -> Boolean): T

firstOrNull
Returns the first element, or null if the array is empty.
fun <T> Array<out T>.firstOrNull(): T?
Returns the first element matching the given predicate, or null if element was not found.
fun <T> Array<out T>.firstOrNull(predicate: (T) -> Boolean): T?

flatMap
Returns a single list of all elements yielded from results of transform function being invoked on each element of original array.
fun <T, R> Array<out T>.flatMap(transform: (T) -> Iterable<R>): List<R>

flatMapTo
Appends all elements yielded from results of transform function being invoked on each element of original array, to the given destination.
fun <T, R, C : MutableCollection<in R>> Array<out T>.flatMapTo(
    destination: C, 
    transform: (T) -> Iterable<R>): C

flatten
Returns a single list of all elements from all arrays in the given array.
fun <T> Array<out Array<out T>>.flatten(): List<T>

fold
Accumulates value starting with initial value and applying operation from left to right to current accumulator value and each element.
fun <T, R> Array<out T>.fold(
    initial: R, 
    operation: (acc: R, T) -> R): R

foldIndexed
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.
fun <T, R> Array<out T>.foldIndexed(
    initial: R, 
    operation: (index: Int, acc: R, T) -> R): R

foldRight
Accumulates value starting with initial value and applying operation from right to left to each element and current accumulator value.
fun <T, R> Array<out T>.foldRight(
    initial: R, 
    operation: (T, acc: R) -> R): R

foldRightIndexed
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.
fun <T, R> Array<out T>.foldRightIndexed(
    initial: R, 
    operation: (index: Int, T, acc: R) -> R): R

forEach
Performs the given action on each element.
fun <T> Array<out T>.forEach(action: (T) -> Unit)

forEachIndexed
Performs the given action on each element, providing sequential index with the element.
fun <T> Array<out T>.forEachIndexed(action: (index: Int, T) -> Unit)

getOrElse
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.
fun <T> Array<out T>.getOrElse(index: Int, defaultValue: (Int) -> T): T

getOrNull
Returns an element at the given index or null if the index is out of bounds of this array.
fun <T> Array<out T>.getOrNull(index: Int): T?

groupBy
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.
fun <T, K> Array<out T>.groupBy(
    keySelector: (T) -> K
): Map<K, List<T>>
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.
fun <T, K, V> Array<out T>.groupBy(
    keySelector: (T) -> K, 
    valueTransform: (T) -> V
): Map<K, List<V>>

Native
groupByTo
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.
fun <T, K, M : MutableMap<in K, MutableList<T>>> Array<out T>.groupByTo(
    destination: M, 
    keySelector: (T) -> K
): M
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.
fun <T, K, V, M : MutableMap<in K, MutableList<V>>> Array<out T>.groupByTo(
    destination: M, 
    keySelector: (T) -> K, 
    valueTransform: (T) -> V
): M

groupingBy
Creates a Grouping source from an array to be used later with one of group-and-fold operations using the specified keySelector function to extract a key from each element.
fun <T, K> Array<out T>.groupingBy(keySelector: (T) -> K): Grouping<T, K>

indexOf
Returns first index of element, or -1 if the array does not contain element.
fun <T> Array<out T>.indexOf(element: T): Int

indexOfFirst
Returns index of the first element matching the given predicate, or -1 if the array does not contain such element.
fun <T> Array<out T>.indexOfFirst(predicate: (T) -> Boolean): Int

indexOfLast
Returns index of the last element matching the given predicate, or -1 if the array does not contain such element.
fun <T> Array<out T>.indexOfLast(predicate: (T) -> Boolean): Int

intersect
Returns a set containing all elements that are contained by both this set and the specified collection.
infix fun <T> Array<out T>.intersect(other: Iterable<T>): Set<T>

isArrayOf
Checks if array can contain element of type T.
fun <T : Any> Array<*>.isArrayOf(): Boolean

isEmpty
Returns true if the array is empty.
fun <T> Array<out T>.isEmpty(): Boolean

isNotEmpty
Returns true if the array is not empty.
fun <T> Array<out T>.isNotEmpty(): Boolean

isNullOrEmpty
Returns true if this nullable array is either null or empty.
fun Array<*>?.isNullOrEmpty(): Boolean

joinTo
Appends the string from all the elements separated using separator and using the given prefix and postfix if supplied.
fun <T, A : Appendable> Array<out T>.joinTo(
    buffer: A, 
    separator: CharSequence = ", ", 
    prefix: CharSequence = "", 
    postfix: CharSequence = "", 
    limit: Int = -1, 
    truncated: CharSequence = "...", 
    transform: (T) -> CharSequence = null
): A

joinToString
Creates a string from all the elements separated using separator and using the given prefix and postfix if supplied.
fun <T> Array<out T>.joinToString(
    separator: CharSequence = ", ", 
    prefix: CharSequence = "", 
    postfix: CharSequence = "", 
    limit: Int = -1, 
    truncated: CharSequence = "...", 
    transform: (T) -> CharSequence = null
): String

last
Returns the last element.
fun <T> Array<out T>.last(): T
Returns the last element matching the given predicate.
fun <T> Array<out T>.last(predicate: (T) -> Boolean): T

lastIndexOf
Returns last index of element, or -1 if the array does not contain element.
fun <T> Array<out T>.lastIndexOf(element: T): Int

lastOrNull
Returns the last element, or null if the array is empty.
fun <T> Array<out T>.lastOrNull(): T?
Returns the last element matching the given predicate, or null if no such element was found.
fun <T> Array<out T>.lastOrNull(predicate: (T) -> Boolean): T?

map
Returns a list containing the results of applying the given transform function to each element in the original array.
fun <T, R> Array<out T>.map(transform: (T) -> R): List<R>

mapIndexed
Returns a list containing the results of applying the given transform function to each element and its index in the original array.
fun <T, R> Array<out T>.mapIndexed(transform: (index: Int, T) -> R): List<R>

mapIndexedNotNull
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.
fun <T, R : Any> Array<out T>.mapIndexedNotNull(transform: (index: Int, T) -> R?): List<R>

mapIndexedNotNullTo
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.
fun <T, R : Any, C : MutableCollection<in R>> Array<out T>.mapIndexedNotNullTo(destination: C,transform: (index: Int, T) -> R?): C

mapIndexedTo
Applies the given transform function to each element and its index in the original array and appends the results to the given destination.
fun <T, R, C : MutableCollection<in R>> Array<out T>.mapIndexedTo(destination: C, transform: (index: Int, T) -> R): C

mapNotNull
Returns a list containing only the non-null results of applying the given transform function to each element in the original array.
fun <T, R : Any> Array<out T>.mapNotNull(transform: (T) -> R?): List<R>

mapNotNullTo
Applies the given transform function to each element in the original array and appends only the non-null results to the given destination.
fun <T, R : Any, C : MutableCollection<in R>> Array<out T>.mapNotNullTo(
    destination: C, 
    transform: (T) -> R?): C

mapTo
Applies the given transform function to each element of the original array and appends the results to the given destination.
fun <T, R, C : MutableCollection<in R>> Array<out T>.mapTo(
    destination: C, 
    transform: (T) -> R): C

max
Returns the largest element or null if there are no elements.
fun <T : Comparable<T>> any_array<T>.max(): T?

maxBy
Returns the first element yielding the largest value of the given function or null if there are no elements.
fun <T, R : Comparable<R>> Array<out T>.maxBy(selector: (T) -> R): T?

maxWith
Returns the first element having the largest value according to the provided comparator or null if there are no elements.
fun <T> Array<out T>.maxWith(comparator: Comparator<in T>): T?

min
Returns the smallest element or null if there are no elements.
fun <T : Comparable<T>> any_array<T>.min(): T?

minBy
Returns the first element yielding the smallest value of the given function or null if there are no elements.
fun <T, R : Comparable<R>> Array<out T>.minBy(selector: (T) -> R): T?

minWith
Returns the first element having the smallest value according to the provided comparator or null if there are no elements.
fun <T> Array<out T>.minWith(comparator: Comparator<in T>): T?

none
Returns true if the array has no elements.
fun <T> Array<out T>.none(): Boolean
Returns true if no elements match the given predicate.
fun <T> Array<out T>.none(predicate: (T) -> Boolean): Boolean

partition
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.
fun <T> Array<out T>.partition(predicate: (T) -> Boolean): Pair<List<T>, List<T>>

random
Returns a random element from this array.
fun <T> Array<out T>.random(): T
Returns a random element from this array using the specified source of randomness.
fun <T> Array<out T>.random(random: Random): T

reduce
Accumulates value starting with the first element and applying operation from left to right to current accumulator value and each element.
fun <S, T : S> Array<out T>.reduce( operation: (acc: S, T) -> S): S

reduceIndexed
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.
fun <S, T : S> Array<out T>.reduceIndexed(operation: (index: Int, acc: S, T) -> S): S

reduceRight
Accumulates value starting with last element and applying operation from right to left to each element and current accumulator value.
fun <S, T : S> Array<out T>.reduceRight(operation: (T, acc: S) -> S): S

reduceRightIndexed
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.
fun <S, T : S> Array<out T>.reduceRightIndexed(operation: (index: Int, T, acc: S) -> S): S

requireNoNulls
Returns an original collection containing all the non-null elements, throwing an IllegalArgumentException if there are any null elements.
fun <T : Any> Array<T?>.requireNoNulls(): Array<T>

reverse
Reverses elements in the array in-place.
fun <T> Array<T>.reverse()

reversed
Returns a list with elements in reversed order.
fun <T> Array<out T>.reversed(): List<T>

reversedArray
Returns an array with elements of this array in reversed order.
fun <T> Array<T>.reversedArray(): Array<T>

single
Returns the single element, or throws an exception if the array is empty or has more than one element.
fun <T> Array<out T>.single(): T
Returns the single element matching the given predicate, or throws exception if there is no or more than one matching element.
fun <T> Array<out T>.single(predicate: (T) -> Boolean): T

singleOrNull
Returns single element, or null if the array is empty or has more than one element.
fun <T> Array<out T>.singleOrNull(): T?
Returns the single element matching the given predicate, or null if element was not found or more than one element was found.
fun <T> Array<out T>.singleOrNull(predicate: (T) -> Boolean): T?

slice
Returns a list containing elements at indices in the specified indices range.
fun <T> Array<out T>.slice(indices: IntRange): List<T>
Returns a list containing elements at specified indices.
fun <T> Array<out T>.slice(indices: Iterable<Int>): List<T>

sliceArray
Returns an array containing elements of this array at specified indices.
fun <T> Array<T>.sliceArray(indices: Collection<Int>): Array<T>

Returns an array containing elements at indices in the specified indices range.
fun <T> Array<T>.sliceArray(indices: IntRange): Array<T>

Sorts a range in the array in-place.
fun <T> Array<out T>.sort(
    fromIndex: Int = 0, 
    toIndex: Int = size)

Sorts the array in-place according to the order specified by the given comparison function.
fun <T> Array<out T>.sort(comparison: (a: T, b: T) -> Int)

sortBy
Sorts elements in the array in-place according to natural sort order of the value returned by specified selector function.
fun <T, R : Comparable<R>> Array<out T>.sortBy( selector: (T) -> R?)

sortByDescending
Sorts elements in the array in-place descending according to natural sort order of the value returned by specified selector function.
fun <T, R : Comparable<R>> Array<out T>.sortByDescending(selector: (T) -> R?)

sortDescending
Sorts elements in the array in-place descending according to their natural sort order.
fun <T : Comparable<T>> Array<out T>.sortDescending()

sorted
Returns a list of all elements sorted according to their natural sort order.
fun <T : Comparable<T>> Array<out T>.sorted(): List<T>

sortedArray
Returns an array with all elements of this array sorted according to their natural sort order.
fun <T : Comparable<T>> Array<T>.sortedArray(): Array<T>

sortedArrayDescending
Returns an array with all elements of this array sorted descending according to their natural sort order.
fun <T : Comparable<T>> Array<T>.sortedArrayDescending(): Array<T>

sortedArrayWith
Returns an array with all elements of this array sorted according the specified comparator.
fun <T> Array<out T>.sortedArrayWith(comparator: Comparator<in T>): Array<out T>

sortedBy
Returns a list of all elements sorted according to natural sort order of the value returned by specified selector function.
fun <T, R : Comparable<R>> Array<out T>.sortedBy(selector: (T) -> R?): List<T>

sortedByDescending
Returns a list of all elements sorted descending according to natural sort order of the value returned by specified selector function.
fun <T, R : Comparable<R>> Array<out T>.sortedByDescending(selector: (T) -> R?): List<T>

sortedDescending
Returns a list of all elements sorted descending according to their natural sort order.
fun <T : Comparable<T>> Array<out T>.sortedDescending(): List<T>

sortedWith
Returns a list of all elements sorted according to the specified comparator.
fun <T> Array<out T>.sortedWith(comparator: Comparator<in T>): List<T>

Sorts the array in-place according to the order specified by the given comparator.
fun <T> Array<out T>.sortWith(comparator: Comparator<in T>)

Sorts a range in the array in-place with the given comparator.
fun <T> any_array<T>.sortWith(
    comparator: Comparator<in T>, 
    fromIndex: Int = 0, 
    toIndex: Int = size)

subarrayContentToString
Returns a string representation of the contents of the subarray of the specified array as if it is List.
fun <T> Array<out T>.subarrayContentToString(
    offset: Int, 
    length: Int): String

Returns a set containing all elements that are contained by this array and not contained by the specified collection.
infix fun <T> Array<out T>.subtract(other: Iterable<T>): Set<T>

sum
Returns the sum of all elements in the array.
fun Array<out Byte>.sum(): Int
fun Array<out Short>.sum(): Int
fun Array<out Int>.sum(): Int
fun Array<out Long>.sum(): Long
fun Array<out Float>.sum(): Float
fun Array<out Double>.sum(): Double
fun Array<out UInt>.sum(): UInt
fun Array<out ULong>.sum(): ULong
fun Array<out UByte>.sum(): UInt
fun Array<out UShort>.sum(): UInt

sumBy
Returns the sum of all values produced by selector function applied to each element in the array.
fun <T> Array<out T>.sumBy(selector: (T) -> Int): Int

sumByDouble
Returns the sum of all values produced by selector function applied to each element in the array.
fun <T> Array<out T>.sumByDouble(selector: (T) -> Double): Double

take
Returns a list containing first n elements.
fun <T> Array<out T>.take(n: Int): List<T>

takeLast
Returns a list containing last n elements.
fun <T> Array<out T>.takeLast(n: Int): List<T>

takeLastWhile
Returns a list containing last elements satisfying the given predicate.
fun <T> Array<out T>.takeLastWhile(predicate: (T) -> Boolean): List<T>

takeWhile
Returns a list containing first elements satisfying the given predicate.
fun <T> Array<out T>.takeWhile(predicate: (T) -> Boolean): List<T>

toBooleanArray
Returns an array of Boolean containing all of the elements of this generic array.
fun Array<out Boolean>.toBooleanArray(): BooleanArray

toByteArray
Returns an array of Byte containing all of the elements of this generic array.
fun Array<out Byte>.toByteArray(): ByteArray

toCharArray
Returns an array of Char containing all of the elements of this generic array.
fun Array<out Char>.toCharArray(): CharArray

toCollection
Appends all elements to the given destination collection.
fun <T, C : MutableCollection<in T>> Array<out T>.toCollection(destination: C): C

toCStringArray
Convert this array of Kotlin strings to C array of C strings, allocating memory for the array and C strings with given AutofreeScope.
fun Array<String>.toCStringArray(autofreeScope: AutofreeScope): CPointer<CPointerVar<ByteVar>>

toCValues
fun <T : CPointed> Array<CPointer<T>?>.toCValues(): CValues<CPointerVar<T>>

toDoubleArray
Returns an array of Double containing all of the elements of this generic array.
fun Array<out Double>.toDoubleArray(): DoubleArray

Returns an array of Float containing all of the elements of this generic array.
fun Array<out Float>.toFloatArray(): FloatArray

toHashSet
Returns a HashSet of all elements.
fun <T> Array<out T>.toHashSet(): HashSet<T>

toIntArray
Returns an array of Int containing all of the elements of this generic array.
fun Array<out Int>.toIntArray(): IntArray

toList
Returns a List containing all elements.
fun <T> Array<out T>.toList(): List<T>

toLongArray
Returns an array of Long containing all of the elements of this generic array.
fun Array<out Long>.toLongArray(): LongArray

toMap
Returns a new map containing all key-value pairs from the given array of pairs.
fun <K, V> Array<out Pair<K, V>>.toMap(): Map<K, V>

Populates and returns the destination mutable map with key-value pairs from the given array of pairs.
fun <K, V, M : MutableMap<in K, in V>> Array<out Pair<K, V>>.toMap(destination: M): M

toMutableList
Returns a MutableList filled with all elements of this array.
fun <T> Array<out T>.toMutableList(): MutableList<T>

toMutableSet
Returns a mutable set containing all distinct elements from the given array.
fun <T> Array<out T>.toMutableSet(): MutableSet<T>

toSet
Returns a Set of all elements.
fun <T> Array<out T>.toSet(): Set<T>

toShortArray
Returns an array of Short containing all of the elements of this generic array.
fun Array<out Short>.toShortArray(): ShortArray

toSortedSet
Returns a SortedSet of all elements.
fun <T : Comparable<T>> any_array<T>.toSortedSet(): SortedSet<T>

toUByteArray
Returns an array of UByte containing all of the elements of this generic array.
fun Array<out UByte>.toUByteArray(): UByteArray

toUIntArray
Returns an array of UInt containing all of the elements of this generic array.
fun Array<out UInt>.toUIntArray(): UIntArray

toULongArray
Returns an array of ULong containing all of the elements of this generic array.
fun Array<out ULong>.toULongArray(): ULongArray

toUShortArray
Returns an array of UShort containing all of the elements of this generic array.
fun Array<out UShort>.toUShortArray(): UShortArray

Returns a set containing all distinct elements from both collections.
infix fun <T> Array<out T>.union(other: Iterable<T>): Set<T>

unzip
Returns a pair of lists, where first list is built from the first values of each pair from this array, second list is built from the second values of each pair from this array.
fun <T, R> Array<out Pair<T, R>>.unzip(): Pair<List<T>, List<R>>

withIndex
Returns a lazy Iterable of IndexedValue for each element of the original array.
fun <T> Array<out T>.withIndex(): Iterable<IndexedValue<T>>

zip
Returns a list of pairs built from the elements of this array and the other array with the same index. The returned list has length of the shortest collection.
infix fun <T, R> Array<out T>.zip(other: Array<out R>): List<Pair<T, R>>

Returns a list of values built from the elements of this array and the other array with the same index using the provided transform function applied to each pair of elements. The returned list has length of the shortest collection.
fun <T, R, V> Array<out T>.zip(other: Array<out R>, transform: (a: T, b: R) -> V): List<V>

Returns a list of pairs built from the elements of this collection and other array with the same index. The returned list has length of the shortest collection.
infix fun <T, R> Array<out T>.zip(other: Iterable<R>): List<Pair<T, R>>

Returns a list of values built from the elements of this array and the other collection with the same index using the provided transform function applied to each pair of elements. The returned list has length of the shortest collection.
fun <T, R, V> Array<out T>.zip(other: Iterable<R>, transform: (a: T, b: R) -> V): List<V>

Leave Any Questions Related To This Article Below!