🤓 Collection 이란?
📎 Collection 은 대부분의 프로그래밍 언어에 대한 일반적인 개념으로, Kotlin 에서만 사용되는 개념 X
- 자료구조를 편하게 다루기 위해 제공하는 라이브러리
- 코틀린에서의 Collection 은 자체적으로 제공하는 Collection 이 아닌,
표준 Java Collection
을 활용
- 그 이유로는
표준 Java Collection
을 활용함으로 자바 코드와 상호작용하기 더 쉽기 때문이라고 함!
🤔 List
vs Array
vs ArrayList
1. List
immutable
한 컬렉션 (MutableList
를 통해서 mutable
한 리스트 사용 가능)
- 순서가 있는 엘리먼트들의 집합
- 읽기 전용
- 배열 안 내용 수정 X
val list: List<Int> = listOf(1, 2, 3)
println(list)
println(list[0])
2. Array
mutable
한 컬렉션
- 초기화 당시에 배열 크기 정해짐(== 배열의 크기 변경 불가능)
- 포인터를 사용하여 값의 위치를 가리킴
val array: Array<Int> = arrayOf(1, 2, 3, 4, 5)
array.set(0, 6)
array[0] = 6
println(array)
println(array.contentToString())
3. ArrayList
mutable
한 컬렉션
- Array 와 다르게 배열 크기 또한 변경 가능
val arrayList: ArrayList<Int> = arrayListOf(1, 2, 3)
println(arrayList)
arrayList.set(1, 5)
arrayList[1] = 5
println(arrayList)
arrayList.remove(5)
println(arrayList)
🧐 List
vs Set
vs Map
1. List
immutable
한 컬렉션 (MutableList
를 통해서 mutable
한 리스트 사용 가능)
- 순서가 있는 엘리먼트들의 집합
- 시퀀스(Sequence) 라고도 부름
- 읽기 전용
- 배열 안 내용 수정 X
val list: List<Int> = listOf(1, 2, 3)
println(list)
println(list[0])
var mutableList: MutableList<Int> = mutableListOf(1, 2, 3)
mutableList.add(4)
println(mutableList)
mutableList[0] = 0
println(mutableList)
mutableList.set(1, 1)
println(mutableList)
mutableList = mutableList.apply {
add(5)
add(6)
}
println(mutableList)
2. Set
immutable
한 컬렉션 (MutableSet
을 통해서 mutable
한 집합 사용 가능)
Set
은 순서가 없는 유일한 요소들의 집합으로, 중복된 요소를 허용X
Set
은 인덱스를 가지지 않으며, 인덱스를 통한 요소 접근이 불가능
val set: Set<Int> = setOf(1, 2, 3)
println(set)
val mutableSet: MutableSet<Int> = mutableSetOf(1, 2, 3)
mutableSet.add(4)
println(mutableSet)
mutableSet.add(2)
println(mutableSet)
mutableSet.remove(1)
println(mutableSet)
3. Map
immutable
한 컬렉션 (MutableMap
을 통해서 mutable
한 map 사용 가능)
Map
은 키-값 쌍의 집합, 각 키는 유일해야 하며 각 키는 하나의 값 가짐
val map: Map<String, Int> = mapOf("one" to 1, "two" to 2, "three" to 3)
println(map)
val mutableMap: MutableMap<String, Int> = mutableMapOf("one" to 1, "two" to 2, "three" to 3)
mutableMap["four"] = 4
println(mutableMap)
mutableMap["one"] = 10
println(mutableMap)
mutableMap.remove("two")
println(mutableMap)
🤗 Collection Function 에는 무엇이 있을까?
📎 자주 사용할 만한 Collection Function 만 정리
1. filter
- 특정 조건을 만족하는 요소만을 추출하여 새로운 컬렉션 생성
val num = listOf(1, 2, 3, 4, 5, 6, 7)
val evenNum = num.filter { it % 2 == 0 }
println(evenNum)
2. map
- 각 요소에 특정 수식을 적용한 결과로만 추출하여 새로운 컬렉션 생성
val num = listOf(1, 2, 3)
val squaredNum = num.map { it * it }
println(squaredNum)
3. forEach
val num = listOf(1, 2, 3)
num.forEach { println(it) }
4. any
- 컬렉션의 요소 중 하나라도 조건 만족 시 true 반환
val num = listOf(1, 3)
println(num.any { it % 2 == 0 })
5. all
- 컬렉션의 모든 요소가 조건 만족 시 true 반환
val num = listOf(2, 4, 6)
println(num.all { it % 2 == 0 })
6. none
- 컬렉션의 모든 요소가 조건을 모두 만족하지 않을 시 true 반환
val num = listOf(2, 4, 6)
println(num.all { it % 2 != 0 })
📌 참고자료
Collections overview | Kotlin
[Kotlin] 컬렉션(Collection)
Kotlin - Collections 소개 및 사용법 정리 (List, Map, Set)
Kotlin - 컬렉션 함수 (Collection Functions)