Kotlin filter - 조건에 맞는 원소 검색

Notepad96

·

2020. 11. 24. 22:29

300x250

 

 

 

 


1. filter

 

filter 함수는 Array, List, Set, Map 에서 사용할 수 있으며

 

특정 조건을 주면 해당 조건에 만족하는 원소들을 구할 수 있다.

 

 

 

해당 결과는 for문과 if식을 사용하면 똑같은 결과를 얻을 수도 있지만

 

filter 함수를 사용한다면 간단하게 한줄로도 구현이 가능해진다.

 

 

 

 

 


2. 코 드

환경 : Kotlin Version = 1.4.10, JVM

fun main(args : Array<String>) {
    println("==============LIST=================")
    val ml = mutableListOf(1, 2, 3, 4, 5, 6, 7, 8)
    println("1. ${ml.toString()}")

    val ml2 = ml.filter { it % 2 == 0 }     // 짝수인 원소
    if(ml2 is List<Int>) println("List")
    println("2. ${ml2.toString()}")

    val ml3 = ml.filterNot { it % 2 == 0 }    // 홀수인 원소
    println("3. ${ml3.toString()}")

    val ml4 = ml.filterIndexed { index, i ->    // index가 짝수인 원소들
        print("${index}:${i} ")
        index % 2 == 0
    }
    println()
    println("4. ${ml4.toString()}")



    println("==============MAP=================")
    val mm = mutableMapOf(1 to "avd", 3 to "zcd", 4 to "fds", 2 to "qwe")
    println("1. ${mm.toString()}")

    val mm2 = mm.filter { it.value < "m" }
    if(mm2 is Map<Int, String>) println("Map")
    println("2. ${mm2.toString()}")

    // mm2[6] = "asdf"  // Error, Map은 불변

    val mm3 = mm.filterNot { it.key < 3 }
    println("3. ${mm3.toString()}")

}

 

결 과

- filter 함수 사용하여 filter 조건으로 짝수인 원소를 구할 수 있다.

 

 

 

- 반환 타입은 List로서 이후 삽입이나 삭제가 필요하다면 MutableList로 타입변환 해주어야 한다.

 

 

 

 

- filterNot 함수는 조건을 만족하지 않는 원소를 구할 수 있다.

 

조건에 따라 짝수일 경우 true가되며 홀수일 경우 false가 되므로 따라서 홀수들을 구할 수 있다.

 

 

 

 

- filterIndexed 함수는 인덱스와 해당 원소에 대하여 접근할 수 있으며 따라서

 

인덱스가 짝수일 경우인 것처럼 조건을 줄 수 있다.

 

 

 

 

 

- Map 또한 filter를 사용하여 Key에 관하여 조건을 줄수도 있으며 Value에 관하여 조건을 줄 수 있다.

 

 

 

 

- 반환타입은 Map이기 때문에 List와 동일하게 이후 추가, 삭제가 필요하다면 MutabalMap으로 변환해주어야 한다.

 

 

 

 


3. 참 조

 

 

filter - Kotlin Programming Language

 

kotlinlang.org

300x250