코틀린 언어 정리 4-4

Collection operations

Common operations( 일반적인 연산들 )

Filtering

컬렉션의 요소들을 특정 조건으로 걸러내어 새로운 컬렉션을 만드는 기능입니다.

Filtering by predicate( 단정에 의한 필터링 )

filter, filterTo, filterIndexed, filterNot, filterIsInstance<>, filterNotNull

보통 이 함수들의 리턴값은 새로 생성된 결과 컬렉션 이지만 ~To로 끝나는 함수는 결과 값을 저장할 컬렉션을 명시적으로 입력할 수 있습니다.


예제

fun test () {

   var list = listOf(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)

   var list_filtered = mutableListOf<Int>()


   println(list.filterNot                  { it > 5 })

   println(list.filterNotTo(list_filtered) { it > 5 })

   println(list_filtered)

   println(list.filter                     { it > 5 })

   println(list.filterTo(list_filtered)    { it > 5 })

   println(list_filtered)


   println(list.filterIndexed { index, it -> index > 5 && it != 7 })

   println(list.filterIndexed { index, it -> if ( index > 5 && it != 7 ) true else false })


   println(list.filterIsInstance<String>())

   println(list.filterIsInstance<Int>())


   var list_hasNull = listOf(1, null, 3, null, 5, null, 7)

   println(list_hasNull.filterNotNull())

}


Partitioning( 분할 )

partition 함수를 호출하면, 컬렉션의 요소들을 특정 조건(predicate)으로 확인하여 조건에 만족하는 것과 만족하지 않는 요소들을 각각의 컬렉션에 추가하여 리턴합니다.( Pair로 두 개의 컬렉션 리턴 )

partition


예제

//fun main ( args: Array<String> ) {

fun test () {

   var list = listOf(1, 2, 3, 4, 5, 6, 7, 8, 9)

   var ( list_low, list_high ) = list.partition { it < 5 }

   println(list_low)

   println(list_high)

}


Testing predicates

컬렉션에 조건에 맞는 요소가 있는지 확인하여 true / false만 리턴해 주는 함수입니다.

any, none, all

any: 입력된 조건에 맞는 값이 하나라도 있으면 true 그렇지 않으면 false 리턴

none: 입력된 조건에 맞는 값이 하나도 없으면 true 그렇지 않으면 false 리턴

all: 컬렉션의 모든 요소가 입력된 조건을 만족하면 true 그렇지 않으면 false 리턴


예제

fun test () {

   var list = listOf(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)

   println(list.any { it > 6 })

   println(list.none { it > 10 })

   println(list.all { it > 6 })

}


+ Recent posts