지정된 인덱스에 있는 요소를 반환하거나 인덱스가 이 컬렉션의 범위를 벗어나면 IndexOutOfBoundsException을 발생시킵니다.
public fun <T> Iterable<T>.elementAt(index: Int): T {
if (this is List)
return get(index)
return elementAtOrElse(index) { throw IndexOutOfBoundsException("Collection doesn't contain element at index $index.") }
}
val list = listOf(1, 2, 3)
println(list.elementAt(0)) // 1
println(list.elementAt(2)) // 3
// list.elementAt(3) // will fail with IndexOutOfBoundsException
val emptyList = emptyList<Int>()
// emptyList.elementAt(0) // will fail with IndexOutOfBoundsException
주어진 인덱스에 있는 요소를 반환하거나, 인덱스가 이 컬렉션의 범위를 벗어나면 defaultValue 함수를 호출한 결과를 반환합니다.
public fun <T> Iterable<T>.elementAtOrElse(index: Int, defaultValue: (Int) -> T): T {
contract {
callsInPlace(defaultValue, InvocationKind.AT_MOST_ONCE)
}
if (this is List)
return this.getOrElse(index, defaultValue)
if (index < 0)
return defaultValue(index)
val iterator = iterator()
var count = 0
while (iterator.hasNext()) {
val element = iterator.next()
if (index == count++)
return element
}
return defaultValue(index)
}
val list = listOf(1, 2, 3)
println(list.elementAtOrElse(0) { 42 }) // 1
println(list.elementAtOrElse(2) { 42 }) // 3
println(list.elementAtOrElse(3) { 42 }) // 42
val emptyList = emptyList<Int>()
println(emptyList.elementAtOrElse(0) { "no int" }) // no int
지정된 인덱스에 있는 요소를 반환하거나 인덱스가 이 컬렉션의 범위를 벗어나면 null 을 반환합니다.
public fun <T> Iterable<T>.elementAtOrNull(index: Int): T? {
if (this is List)
return this.getOrNull(index)
if (index < 0)
return null
val iterator = iterator()
var count = 0
while (iterator.hasNext()) {
val element = iterator.next()
if (index == count++)
return element
}
return null
}
val list = listOf(1, 2, 3)
println(list.elementAtOrNull(0)) // 1
println(list.elementAtOrNull(2)) // 3
println(list.elementAtOrNull(3)) // null
val emptyList = emptyList<Int>()
println(emptyList.elementAtOrNull(0)) // null
elementAt - Kotlin Programming Language
kotlinlang.org
elementAtOrElse - Kotlin Programming Language
kotlinlang.org
elementAtOrNull - Kotlin Programming Language
kotlinlang.org
'코틀린 > [Elements] 요소 작업' 카테고리의 다른 글
[Kotlin][Collection] first / firstOrNull (0) | 2024.08.20 |
---|---|
[Kotlin][Collection] contains (0) | 2024.08.19 |
[Kotlin][Collection] forEach / forEachIndexed (0) | 2024.08.09 |