[Kotlin Koans] Collection(2)

JJAE WON·2022년 5월 13일
0
post-thumbnail

Kotlin Koans 에서 Introduction 부분의 문제를 풀고 공부한 내용을 정리한 글 입니다.

Filtering collections

조건을 걸어 필터링하기 : filter()

val numbers = listOf("one", "two", "three", "four")  
val longerThan3 = numbers.filter { it.length > 3 }
println(longerThan3)

val numbersMap = mapOf("key1" to 1, "key2" to 2, "key3" to 3, "key11" to 11)
val filteredMap = numbersMap.filter { (key, value) -> key.endsWith("1") && value > 10}
println(filteredMap)

/**
결과
[three, four]
{key11=11}
**/

filter 함수에는 조건자와 함께 호출하면 필터에 일치하는 값만 반환한다.

list와 set 모두 List형태로 반환되고 map을 map으로 반환된다.

endsWith() startWith() 끝과 처음이 어떤 글자인지 확인 , 리턴값 boolean

filterIndexed() , filterNot() , filterNotNull()

val numbers = listOf("one", "two", "three", "four")

val filteredIdx = numbers.filterIndexed { index, s -> (index != 0) && (s.length < 5)  }
val filteredNot = numbers.filterNot { it.length <= 3 }

val numbers = listOf(null, "one", "two", null)
numbers.filterNotNull().forEach {
    println(it.length)   // length is unavailable for nullable Strings
}

println(filteredIdx)
println(filteredNot)

/**
결과
3
3
[two, four]
[three, four]
**/

filterIndexed() 인덱스 값을 같이 확인하는 함수

filterNot() 부정값

filterNotNull() Null이 아닌값만 뽑아 줌

filterIsInstance()

val numbers = listOf(null, 1, "two", 3.0, "four")
println("All String elements in upper case:")
numbers.filterIsInstance<String>().forEach {
    println(it.uppercase())
}

/**
결과
All String elements in upper case:
TWO
FOUR
**/

일치하는 타입값의 값들만 뽑아 줌. any를 적으면 모든 값이 다 반환되고

string이면 문자열만 double이면 double만!

partition()

val numbers = listOf("one", "two", "three", "four")
val (match, rest) = numbers.partition { it.length > 3 }

println(match)
println(rest)

/** 
[three, four]
[one, two]
**/

리스트로 반환되며 앞에는 true 값이 뒤에는 false값이 저장됩니다.

profile
안드왕 찐천재가 되고싶다.

0개의 댓글