Collection이란?
Kotlin에서 컬렉션(Collection)이란 여러 개의 객체를 하나의 그룹으로 관리할 수 있는 컨테이너를 의미합니다. 이러한 컬렉션은 데이터를 저장하고 조작하기 위해 사용됩니다. Kotlin 컬렉션은 일반적으로 데이터를 저장하고 필요한 시점에 데이터를 추가, 제거, 수정하는 등의 작업을 수행할 수 있게 해 줍니다. 이와 같은 기능은 프로그래밍에서 매우 자주 사용되며, 효율적인 데이터 관리를 위해 필수적입니다.
Kotlin의 컬렉션은 불변(Immutable)과 가변(Mutable) 두 가지 유형으로 나눌 수 있습니다. 불변 컬렉션은 생성된 이후 데이터를 변경할 수 없는 반면, 가변 컬렉션은 데이터를 자유롭게 추가, 수정, 삭제할 수 있습니다.
Collection의 주요 유형
Kotlin에서는 다양한 유형의 Collection을 제공합니다. 각 유형은 데이터 저장 방식과 접근 방법에 다라 나뉘며, 대표적인 Collection은 다음과 같습니다.
1) List
List는 순서가 있는 컬렉션으로, 동일한 값이 여러 번 포함될 수 있는 특징을 가지고 있습니다. Kotlin의 List는 불변형 List와 가변형 MutableList로 나뉩니다. 불변형 List는 생성 후 변경이 불가능한 반면, MutableList는 요소를 추가하거나 삭제할 수 있습니다.
val immutableList = listOf("one", "two", "three") // 불변 리스트
val mutableList = mutableListOf("one", "two", "three") // 가변 리스트
mutableList.add("four") // 요소 추가 가능
2) Set
Set은 고유한 요소만을 포함하는 컬렉션입니다. 중복된 값은 허용되지 않으며, 요소의 순서는 보장되지 않습니다. Set 역시 불변형 Set과 가변형 MutableSet으로 나눌 수 있습니다.
val immutableSet = setOf("one", "two", "three") // 불변 집합
val mutableSet = mutableSetOf("one", "two", "three") // 가변 집합
mutableSet.add("four") // 요소 추가 가능
3) Map
Map은 키와 값의 쌍으로 구성된 컬렉션입니다. 각 키는 고유하며, 하나의 키에 대해 하나의 값이 매핑됩니다. Map에는 불변형 Map과 가변형 MutableMap이 있습니다. MutableMap을 사용하면 키-값 쌍을 추가하거나 제거할 수 있습니다.
val immutableMap = mapOf(1 to "One", 2 to "Two") // 불변 맵
val mutableMap = mutableMapOf(1 to "One", 2 to "Two") // 가변 맵
mutableMap[3] = "Three" // 요소 추가 가능
Collection Function
1) filter
- 특정 조건을 만족하는 요소만을 추출하여 새로운 Collection 생성
val list = listOf("one", "two", "three", "four", "five")
val results = list.filter { it.length > 3 }
println(results)
// 출력값 : ["three", "four", "five"]
2) map
- 각 요소에서 특정 수식을 적용한 결과로만 추출하여 새로운 Collection 생성
val num = listOf(2, 4, 6)
val squaredNum = num.map { it * it }
println(squaredNum)
// 출력값 : [4, 16, 36]
3) forEach
- Collection의 각 요소에 대해 특정 작업 수행
val list = listOf("red", "green", "blue")
list.forEach { println(it) }
//출력값 :
// red
// green
// blue
4) any
- Collection의 요소 중 하나라도 조건 만족 시 true 반환, 만족하지 않을 시 false 반환
val list = listOf("one", "two", "three", "four", "five")
println(list.any { it == "five" })
// 출력값 : true 반환
5) all
- Collection의 모든 요소가 조건 만족 시 true 반환, 만족하지 않을 시 false 반환
val list = listOf("one", "two", "three", "four")
println(list.all { it.contaions("o") })
// 출력값 : false 반환
6) none
- Collection의 모든 요소가 조건을 모두 만족하지 않을 시 true 반환, 만족 시 false 반환
val list = listOf("one", "two", "three", "four")
println(list.none { it == "five" })
// 출력값 : false 반환
정리
코틀린의 Collection의 List, Set, Map에 대해서 알아보고 Collection Function에 대해 알아보았습니다. 코틀린의 Collection이 자바와 다른 점은 Mutable(불변리스트), Immutable(가변리스트)을 구분하여 지원한다는 점입니다. 실제로 코틀린으로 개발을 해보시면 Collection Function의 기능들을 자주 사용하게 되실 겁니다. 저 같은 경우에는 filter와 map을 많이 사용했습니다. 코틀린의 Collection과 Collection Function만 정확히 익혀도 코딩하는데 많은 도움이 됩니다.