들어가기 전에
기존의 클래스 구조를 수정하지 않고도 멤버 메서드를 확장할 수 있는 확장 함수기법 기억나시죠? 코틀린에서는 컬렉션에 많은 확장 함수를 제공하고 있습니다.
핵심 키워드
- 연산자(operators)
- 집계(aggregators)
- 검사(checks)
학습하기
들어가기 전에
기존의 클래스 구조를 수정하지 않고도 멤버 메서드를 확장할 수 있는 확장 함수기법 기억나시죠? 코틀린에서는 컬렉션에 많은 확장 함수를 제공하고 있습니다.
핵심 키워드
학습하기
컬렉션의 연산
연산자를 이용하면 컬렉션에 대해 더하거나 빼는 등의 기능을 수행할 수 있습니다.
일반적인 연산자인 +와 -를 이용해 컬렉션 요소를 하나씩 더하거나 뺄 수 있고 컬렉션 자체를 더하거나 뺄 수 있습니다. 이때 listOf(), Pair(), mapOf()등을 더하거나 빼는 방법으로 요소를 병합하거나 제거할 수 있습니다.
요소의 처리와 집계에 대한 연산
먼저 각 연산을 테스트하기 위해서 컬렉션을 준비합니다. 요소를 집계하는 확장 함수로는 forEach, forEachIndexed, onEach, count, max, min, maxBy, minBy, fold, reduce, sumBy 등이 있습니다.
fun main() {
val list = listOf(1, 2, 3, 4, 5, 6)
val listPair = listOf(Pair("A", 300), Pair("B", 200), Pair("C", 100))
val map = mapOf(11 to "Java", 22 to "Kotlin", 33 to "C++")
// TODO ...
}
요소의 순환
먼저 각 요소에 대한 순환 처리를 위해 사용하는 forEach와 forEachIndexed를 사용합니다.
// forEach: 각 요소를 람다식으로 처리
list.forEach { print("$it ") }
println()
list.forEachIndexed { index, value -> println("index[$index]: $value") } // 인덱스 포함
요소의 일치 여부
all과 any는 모든 요소가 일치하거나 최소한 하나 혹은 그 이상이 일치될 때 사용할 수 있는 연산입니다. all은 람다식에서 모든 요소가 일치되어야 true를 반환하며, any는 최소한 하나 혹은 그 이상의 특정 요소가 일치되면 true를 반환합니다.
http://www.yes24.com
comment