Retrieve by position
- Index에 있는 element 하나를 가지고 오는데 사용되는 operator
elementAt() set / list 에 있는 element를 가져오는데 사용
fun getElementFromSetSampleCode() {
val numbers = linkedSetOf("one", "two", "three", "four", "five")
println(numbers.elementAt(3))
val numbersSortedSet = sortedSetOf("one", "two", "three", "four")
println(numbersSortedSet.elementAt(0)) // elements are stored in the ascending order
}
elementAtOrNull() 등의 operator를 활용하여 안정성을 높일 수 있음
fun getElementFromListSampleCode() {
val numbers = listOf("one", "two", "three", "four", "five")
println(numbers[0])
println(numbers.get(0))
println(numbers.elementAt(0))
println(numbers.first())
println(numbers.last())
println(numbers.elementAt(20)) // runtime error
println(numbers.elementAtOrNull(20))
println(numbers.elementAtOrElse(20, { index -> "The value for index $index is undefined"}))
}
Retrieving by condition
- 조건 식에 맞는 값들 중 한가지 element ( first / last )를 가져옴
first() / last() 가 사용되며, 조건 식에 맞는 값 중 첫번째 / 마지막 element를 리턴
- 조건에 맞는 값이 collection에 없을 시
NoSuchElementException 을 발생 시킴
fun firstLastSampleCode() {
val numbers = listOf("one", "two", "three", "four", "five", "six")
println(numbers.first { it.length > 3 })
println(numbers.last { it.startsWith("f") })
}
NoSuchElementException 방지를 위해 firstOrNull() 등의 operator 사용 ( 조건에 맞는 element 없을 시 null 리턴 )
val numbers = listOf("one", "two", "three", "four", "five", "six")
println(numbers.firstOrNull { it.length > 6 })
fun findSampleCode() {
val numbers = listOf(1, 2, 3, 4)
println(numbers.find { it % 2 == 0 }) // ( == firstOrNull )
println(numbers.findLast { it % 2 == 0 }) // ( == lastOrNull )
}
Random element
- collection에서 랜덤한 element 하나를 가져오는 operator
- empty collection 에서는
NoSuchElementException 을 발생 시키기 때문에, randomOrNull() operator 사용 가능
fun checkRandomOperatorCode() {
val numbers = listOf(1, 2, 3, 4)
println(numbers.random())
println(numbers.randomOrNull())
}
Check element existence