코틀린에서 Collections는 3가지 종류가 있다.
1. list
2. set
3. map
여기서도 읽기/쓰기가 가능한지(mutable), 읽기만 가능한지(immutable)에 따라 선언방식이 다르다.
1. List
리스트는 배열과 같은 기능을 가진다.
listOf로 초기화하면 읽기만 가능한 리스트가 생성이 되고,
mutableListOf로 선언한 리스트는 add나 removeAt등의 함수를 이용해 값을 변경할 수 있다.
아래 소스코드는 리스트의 값 변경 및 다양한 출력 방법이다.
fun main(){
val list = listOf("Kotlin", "Java", "C") //읽기
val mutableList = mutableListOf(1, 2, 3, 4) //읽기, 쓰기
//val mutableList = mutableListOf<Int>()
mutableList.add(42)
mutableList.removeAt(2)
println(mutableList)
for(item in mutableList){
println(item)
}
mutableList.forEach {
println(it)
}
println("Number of elements: ${mutableList.size}") //4
println("Second elements: ${mutableList[1]}") //2
println("Index of elements 42: ${mutableList.indexOf(42)}") //3
}
2.Set
리스트와 거의 동일하지만 차이점은 중복된 값을 허용하지 않는다는 것이다.
fun main(){
val mySet = setOf("Hello", "Kotlin")
val myMutableSet = mutableSetOf(1,2,3,5)
//val myMutableSet = mutableSetOf<Int>()
myMutableSet.add(3)
myMutableSet.add(35)
println(myMutableSet) // [1, 2, 3, 5, 35]
}
3.Map
맵은 key-value 쌍으로 이루어진 Collection이다.
Dictionary와 같이 key값은 중복될 수 없으며 value는 중복가능하다.
fun main(){
val myMap = mapOf("Up" to 1, "Down" to 2)
val myMutableMap = mutableMapOf("One" to 1, "Two" to 2, "Three" to 3)
//val myMutableMap = mutableMapOf<String, Int>()
myMutableMap["Four"] = 4
println(myMutableMap) //{One=1, Two=2, Three=3, Four=4}
if("Up" in myMap) println("Yes is in") //Yes is in
if(4 in myMutableMap.values) println("Yes is in") //Yes is in
}
4. Empty Collections
코틀린에서는 비어있는 콜렉션으로 초기화 할 수도 있다.
말그대로 아무것도 없는 빈 Immutable collection이다.
이놈들의 활용에 대해선 추후 다시 알아보고 지금은 이런게 있다라는 것만 알아놓자.
val emptyList = emptyList<String>()
val emptySet = emptySet<Int>()
val emptyMap = emptyMap<String, Int>()
5. Filter
콜렉션 항목들 중 원하는 것만 얻고 싶을때 filter를 활용할 수 있다.
fun main(){
val list = listOf("Kotlin", "Java", "C")
val found0 = list.filter {
it.length >= 3
}
println(found0) //[Kotlin, Java]
val found1 = list.filter {
it.startsWith("k")
}
println(found1) //[]
val found2 = list.filter {
it == "C"
}
println(found2) //[C]
val found3 = list.filter {
it.startsWith("k", ignoreCase = true) && it.endsWith("n")
}
println(found3) //[Kotlin]
}
이외에 코틀린 콜렉션에 대해 잘 설명해둔 사이트가 있어서 소개한다.
Kotlin Collection Functions Cheat Sheet
'Programming > Kotlin, Android' 카테고리의 다른 글
[Kotlin] 알아가기 - 5 (0) | 2023.06.15 |
---|---|
[Kotlin] 알아가기 - 4 (OOP) (0) | 2023.06.15 |
[Kotlin] 알아가기 - 2 (fun, Lambda) (0) | 2023.06.14 |
[Kotlin] 알아가기 - 1 (0) | 2023.06.14 |