본문 바로가기

앱 개발/Kotlin_Android

indexOf, filter, indices

<indexOf>

 컬렉션, 배열에서 특정 요소의 인덱스를 찾는 함수이다. 해당 요소가 컬렉션에 존재하지 않으면 -1을 반환한다.

fun main() {
    val fruits = listOf("apple", "banana", "orange", "grape")
    val indexOfBanana = fruits.indexOf("banana")

    println("Index of 'banana': $indexOfBanana")
}

 indexOf 함수는 리스트나 배열이 큰 경우 성능에 영향을 줄 수 있다. 리스트가 정렬되어 있다면 binarySearch 함수를 사용하는 것이 빠를 수 있다.

val sortedFruits = listOf("apple", "banana", "grape", "orange")
val indexOfBanana = sortedFruits.binarySearch("banana")


<filter>

 원본 컬렉션을 변경하지 않고 조건을 만족하는 요소들로 이루어진 새로운 컬렉션을 반환한다. filter 람다 함수에서 it은 각 요소를 나타내는 변수이고, 조건을 만족하는 경우에만 해당 요소가 새로운 컬렉션에 포함된다. 

fun main() {
    val numbers = listOf(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
    val evenNumbers = numbers.filter { it % 2 == 0 }

    println("Original List: $numbers")
    println("Filtered List: $evenNumbers")
}


<indices>

 컬렉션의 인덱스 범위를 나타내는 property이다.  주로 for 루프에서 컬렉션의 인덱스에 접근할 때 사용된다.

fun main() {
    val fruits = listOf("apple", "banana", "orange", "grape")

    for (index in fruits.indices) {
        println("Index: $index, Element: ${fruits[index]}")
    }
}

 fruits.indices는 fruits 리스트의 인덱스 범위를 나타내며 for 루프에서 이를 사용하여 리스트의 각 인덱스에 접근한다. index는 각 인덱스를, fruits[index]는 해당 인덱스의 요소를 나타낸다. indices 속성은 컬렉션의 크기에 따라 인덱스 범위가 동적으로 조정된다. 따라서 컬렉션의 인덱스에 대하여 명시적인 범위를 지정할 필요 없이 간편하게 접근할 수 있다.

728x90

'앱 개발 > Kotlin_Android' 카테고리의 다른 글

Bundle  (0) 2024.02.19
중첩 리스트, flatten  (0) 2024.02.13
as  (0) 2024.02.06
contains, startsWith  (0) 2024.02.01
Elvis operator  (0) 2024.01.26