THINK HARD

코틀린 기본(3) - 컬렉션 본문

안드로이드/공부

코틀린 기본(3) - 컬렉션

HEEJUNDID 2025. 9. 14. 22:38
728x90
반응형

컬렉션

자바에는 리스트(List), 셋(Set), 맵(Map) 등 여러 자료구조가 있다. 코틀린에서도 이러한 컬렉션을 모두 사용가능하고 편리한 함수도 있다. 코틀린은 컬렉션을 읽기 전용(immutable)컬렉션과 읽기-쓰기(mutable)컬렉션으로 두가지로 나뉜다.

리스트(List)

리스트는 순서가 있는 자료구조이다. 읽기 전용으로할지 읽기 쓰기가 모두 가능할지 정한 후 목적에 맞는 함수로 리스트를 만들어야 한다.

// 읽기 전용
val numImmutableList = listOf(1, 2, 3)
numImmutableList[0] = 1// 오류 발생

읽기전용 리스트로 만들었기에 오류가 난다.

val numMutableList = mutableListOf(1, 2, 3)
numMutableList[0] = 100

println(numMutableList) // 100, 2, 3
println(numMutableList[0]) // 100

읽기와 쓰기 모두 가능한 리스트를 만드려면 mutableListOf() 함수를 사용하면 된다.

리스트에 어떠한 요소가 있는지 확인하려면 contains()함수를 사용하면 된다.

println(numMutableList.contains(1)) // false
println(numMutableList.contains(2)) // true

셋(Set)

Set은 순서가 없다. 또한 중복되지 않은 요소들로 만들어 지므로 같은 값을 추가하더라도 해당 값은 하나만 저장된다. 리스트와 마찬가지로 읽기 전용 셋과 읽기 쓰기 모두 가능한 셋, 총 두가지를 제공한다.

setOf() - 읽기만 가능

mutableSetOf() - 읽기 쓰기 모두 가능

//읽기와 쓰기 모두 가능한 셋
val mutableSet = mutableSetOf(1, 1, 2, 2, 3, 3)
mutableSet.add(100) // 100을 추가 -> true
mutableSet.remove(1) // 1을 제거 -> true
mutableSet.remove(200) // 200을 제거 -> false

println(mutableSet) // [2,3,100]
println(mutableSet.contains(1)) // 1을 제거 했으므로 false

맵(Map)

맵은 키와 값을 짝지어 저장하는 자료구조이다. 키는 중복되지 않도록 해야하고 읽기 전용, 읽기 쓰기 가능한 맵 두가지 종류가 있다.

// 읽기 전용 맵
val immutableMap = mapOf("name" to "jinsu", "age" to 13, "age" to 15, "height" to 160)
println(immutableMap) // {name=jinsu, age=15, height=160} -> age는 뒤에 정의한 값으로 나온다.

// 읽기와 쓰기 모두 가능한 맵
val mutableMap = mutableMapOf("돈까스" to "일식", "짜장면" to "중식", "김치" to "한식")
mutableMap.put("막국수", "한식")
mutableMap.remove("돈까스")
mutableMap.replace("김치", "맛있음")
println(mutableMap) // {짜장면=중식, 김치=맛있음, 막국수=한식}
728x90
반응형