본문 바로가기
코틀린/[Elements] 요소 작업

[Kotlin][Collection] first / firstOrNull

by jinwo_o 2024. 8. 20.

첫 번째 요소를 반환합니다.

주어진 조건자와 일치하는 첫 번째 요소를 반환합니다.

NoSuchElementException - 컬렉션이 비어 있는 경우

public fun <T> Iterable<T>.first(): T {
    when (this) {
        is List -> return this.first()
        else -> {
            val iterator = iterator()
            if (!iterator.hasNext())
                throw NoSuchElementException("Collection is empty.")
            return iterator.next()
        }
    }
}

public inline fun <T> Iterable<T>.first(predicate: (T) -> Boolean): T {
    for (element in this) if (predicate(element)) return element
    throw NoSuchElementException("Collection contains no element matching the predicate.")
}


print(listOf<Int>().first()) // NoSuchElementException

val list = listOf(1, 2, 3, 4)
print(list.first()) // 1

 

첫 번째 요소를 반환하거나 컬렉션이 비어 있으면 null을 반환합니다.
주어진 조건과 일치하는 첫 번째 요소를 반환하거나, 요소를 찾을 수 없으면 null을 반환합니다.
public fun <T> List<T>.firstOrNull(): T? {
    return if (isEmpty()) null else this[0]
}

public inline fun <T> Iterable<T>.firstOrNull(predicate: (T) -> Boolean): T? {
    for (element in this) if (predicate(element)) return element
    return null
}


print(listOf<Int>().firstOrNull()) // null
    
val intArray = intArrayOf(0, 1, 2, 3)
print(intArray.firstOrNull { it % 2 == 1 } ?: -1) // 1

 

first - Kotlin Programming Language

 

kotlinlang.org

 

firstOrNull - Kotlin Programming Language

 

kotlinlang.org