처음과 마지막
first와 last
이 함수들은 컬렉션의 첫 번째와 마지막 아이템을 반환합니다. 명제로 찾을 수도 있는데, 그 경우 명제에 참인 첫 아이템 또는 마지막 아이템을 찾아줍니다. 컬렉션이 비어있거나 조건에 해당하는 값이 없다면, NoSuchElementException 예외가 발생합니다.
fun main() {
//sampleStart
val numbers = listOf(1, -2, 3, -4, 5, -6) // 1
val first = numbers.first() // 2
val last = numbers.last() // 3
val firstEven = numbers.first { it % 2 == 0 } // 4
val lastOdd = numbers.last { it % 2 != 0 } // 5
//sampleEnd
println("숫자들: $numbers")
println("처음은 $first, 마지막은 $last, 첫 짝수는 $firstEven, 마지막 홀수는 $lastOdd")
}
- 여러 숫자를 담은 컬렉션을 만들었습니다.
- 첫 번째 아이템을 구했습니다.
- 마지막 아이템을 구했습니다.
- 첫 짝수를 구했습니다.
- 마지막 홀수를 구했습니다.
firstOrNull과 lastOrNull
이 함수들은 위 함수들과 거의 같지만, 한 가지 차이점이 있습니다. 해당 값이 없는 경우 예외를 발생시키는 대신에 null을 반환한다는 점이 다릅니다.
fun main() {
//sampleStart
val words = listOf("foo", "bar", "baz", "faz") // 1
val empty = emptyList<String>() // 2
val first = empty.firstOrNull() // 3
val last = empty.lastOrNull() // 4
val firstF = words.firstOrNull { it.startsWith('f') } // 5
val firstZ = words.firstOrNull { it.startsWith('z') } // 6
val lastF = words.lastOrNull { it.endsWith('f') } // 7
val lastZ = words.lastOrNull { it.endsWith('z') } // 8
//sampleEnd
println("빈 리스트에 대해: 처음은 $first, 마지막은 $last")
println("단어 리스트: 'f'로 시작하는 첫 아이템은 $firstF, 'z'로 시작하는 첫 아이템은 $firstZ")
println("단어 리스트: 'f'로 끝나는 마지막 아이템은 is $lastF, 'z'로 끝나는 마지막 아이템은 $lastZ")
}
- 단어들을 담은 컬렉션을 만들었습니다.
- 빈 컬렉션을 준비했습니다.
- 빈 컬렉션에서 첫 아이템을 구했습니다.
null이 반환됩니다. - 빈 컬렉션에서 마지막 아이템을 구했습니다. 마찬가지로
null이 반환됩니다. - 'f'로 시작하는 첫 단어를 구합니다.
- 'z'로 시작하는 첫 단어를 구합니다.
- 'f'로 끝나는 마지막 단어를 구합니다.
- 'z'로 끝나는 마지막 단어를 구합니다.