Kotlin filter - 조건에 맞는 원소 검색
Notepad96
·2020. 11. 24. 22:29
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. 참 조
'Kotlin > Collections' 카테고리의 다른 글
Kotlin map 함수 - 리스트 값들 변경 (0) | 2020.11.25 |
---|---|
Kotlin any, all, none - 존재 여부 확인 (0) | 2020.11.25 |
Kotlin sort map by value - 맵 값(Value)으로 정렬 (0) | 2020.11.24 |
Kotlin Map, MutableMap 추가, 삭제, 프로퍼티 (0) | 2020.11.23 |
Kotlin set 합집합, 차집합, 교집합 - union, subtract, intersect (0) | 2020.11.23 |