테크과학! DiMo
개발 환경: play.kotlinlang.org
컬렉션 함수
list나 set, map과 같은 컬렉션 또는 배열에 일반 함수 또는 람다 함수 형태를 사용하여 for문 없이도 아이템을 순회하며
참조하거나 조건을 걸고, 구조의 변경까지 가능한 여러 가지 함수를 지칭한다.
forEach
collection.forEach{
println(it)
}
filter
collection.filter {
it < 4 (it에 조건을 걸어줌)
}
map
collection.map {
it *2 (it에 수식을 적용하여 값을 변경하여 컬렉션으로 만들어주고 반환)
}
any all none
collection.any{it == 0} 하나라도 조건에 맞으면 true
collection.all{it == 0} 모두 조건에 맞으면 true
collection.none{it == 0} 하나도 조건에 맞지 않으면 true
first
collection.first() 일반함수로 사용하는 경우 컬렉션의 첫번째 객체를 반환
collection.first{it > 3} 람다함수 형태로 중괄호 안의 it에 조건을 걸어주면 조건에 맞는 첫번째 객체를 반환
last
collection.last{it > 3} 조건에 맞는 마지막 객체를 반환
first -> find 대체 가능
last -> findLast로 대체 가능
first, last 함수 사용시 문제점
조건에 맞는 객체가 없는 경우( = 컬렉션이 비어 있는 경우)
NoSuchElementException이 발생.
이 때는 firstOrNull, lastOrNull을 사용하면 객체가 없는 경우 null을 반환
count
collection.count() 일반함수로 사용하면 컬렉션의 모든 아이템의 개수 반환
collection.count{it > 7} 중괄호와 함께 it에 조건을 걸어주면 조건에 맞는 아이템 갯수를 반환
컬렉션 함수들을 사용하면 반복문, 조건문을 사용하는 대부분을 대체할 수 있다는 장점
fun main() {
val nameList = listOf("박수영", "김지수", "김다현", "신유나", "김지우")
nameList.forEach{ print(it + " ")}
println()
println(nameList.filter{it.startsWith("김")})
println(nameList.map {"이름 : " + it})
println(nameList.any{it == "김지연"})
println(nameList.all{it.length == 3})
println(nameList.none{it.startsWith("이")})
println(nameList.first{it.startsWith("김")})
println(nameList.last{it.startsWith("김")})
println(nameList.count{it.contains("지")})
println(nameList.lastOrNull{it.startsWith("학")})
}
Output:
박수영 김지수 김다현 신유나 김지우
[김지수, 김다현, 김지우]
[이름 : 박수영, 이름 : 김지수, 이름 : 김다현, 이름 : 신유나, 이름 : 김지우]
false
true
true
김지수
김지우
2
null
'Kotlin > 기본 문법' 카테고리의 다른 글
코틀린 강좌 #28 변수의 고급 기술. 상수, lateinit, lazy (0) | 2020.12.24 |
---|---|
코틀린 강좌 #27 컬렉션 함수, 두번째 이야기! (0) | 2020.12.24 |
코틀린 강좌 #25 컬렉션 2탄, Set과 Map (0) | 2020.12.24 |
코틀린 강좌 #24 Data Class 와 Enum Class (0) | 2020.12.24 |
코틀린 강좌 #23 중첩클래스와 내부클래스 (0) | 2020.12.24 |