자료구조 모임을 collection이라고 한다.
kotlin에는 크게 세 개의 collection이 존재한다.
1. List
데이터를 순서있게 추가한다.
read-only로 만들고 싶으면 listOf()를,
mutable로 만들고 싶으면 mutableListOf()를 사용한다.
// Read only list
val rol = listOf("a","b","c")
// Mutable list
val ml = mutableListOf("aa","bb","cc")
여기서도 마찬가지로 타입을 명시적으로 선언할 수 있다.
// Read only list
val rol: List<String> = listOf("aaa","bbb","ccc")
// Mutable list
val ml: MutableList<String> = listOf("aaaa","bbbb","cccc")
만약 mutable list로 선언한 리스트를 불변하도록 바꾸고싶으면, list로 casting해도 된다.
// declare mutable list
val ml: MutableList<String> = mutableListOf("aa", "bb", "cc")
// casting to read-only list
val mlLocked: List<String> = ml
list에 있는 값을 참조하고 싶으면, index를 통해 참조할 수 있다.
rol[1]와 같이 참조 가능하며, 인덱스는 앞에서부터 0으로 시작한다.
-사용 가능 함수들
함수 | 설명 | 사용예 |
first | 맨 앞 item 참조 | list.first() |
last | 맨 뒤 item 참조 | list.last() |
count | item 개수 | list.count() |
in | list에 item이 있는지를 true/false로 리턴 | val list1 = listOf("a","b","c") println("a" in list1) // => true 출력 println("d" in list1) // => false 출력 |
add | mutable list에서 마지막에 item을 추가 | list.add("d") |
remove | mutable list에서 item 삭제 | list.remove("b") |
2. Set
순서와 중복이 없는 list이다.
read-only set은 Set type으로, setOf()를 사용해 생성하고,
mutable set은 MutableSet type으로, mutableSetOf()를 사용해 생성할 수 있다.
만약 중복된 item을 추가하면 새로 추가되지 않는다.
또한, list와 마찬가지로 mutable을 read-only로 만들고 싶으면 MutableSet을 Set에 type casting 해주면 된다.
다만, 순서가 없는 list이므로 index로 item에 접근할 수 없다.
-사용 가능 함수들
함수 | 설명 | 사용예 |
count | item 개수 | set.count() |
in | list에 item이 있는지를 true/false로 리턴 | val set1 = setOf("a","b","c") println("a" in set1) // => true 출력 println("d" in set1) // => false 출력 |
add | mutable set에서 마지막에 item을 추가 | set.add("d") |
remove | mutable set에서 item 삭제 | set.remove("b") |
3. Map
key-value 쌍으로 item을 저장하는 자료구조이다.
key를 참조해 item 값을 알 수 있다.
read-only map은 Map type으로, mapOf()를 이용해 생성하며,
mutable map은 MutableMap type으로, mutableMapOf()를 이용해 생성한다.
val mm: MutableMap<String, Int> = mutableMapOf("a" to 100, "b" to 190, "c" to 100)
println(mm)
// {a=100, b=190, c=100}
위처럼, <type,type>으로 특정 타입을 지정할 수 있고,
'[key] to [value]'의 형식으로 map의 key와 value 쌍을 연결해 선언한다.
map은 indexed access operator인 []를 이용해 item에 접근할 수 있다.
map["a"]와 같이 사용 가능하다.
-사용 가능 함수들
함수 | 설명 | 사용예 |
count | item 개수 | map.count() |
put | mutable map에서 마지막에 item을 추가 | map.put("d",120) |
remove | mutable map에서 item 삭제 | map.remove("b") |
containsKey | key를 통해 item의 유무를 true/false로 리턴 | map.containsKey("c") // => true |
keys | map의 key list를 출력 | println(map.keys) // [a, b, c] |
values | map의 value list를 출력 | println(map.values) // [100, 190, 100] |
in | key나 value가 존재하는지 true/false 리턴 | println("d" in map.keys) // true println(200 in map.values) // false |
'CS > Kotlin' 카테고리의 다른 글
[Kotlin 문법] 6. 함수 - Unit, default parameter value, single-expression, named argument (1) | 2024.06.07 |
---|---|
[Kotlin 문법] 5. loop - range, for, while (0) | 2024.06.07 |
[Kotlin 문법] 4. 조건문 - if, when (0) | 2024.06.07 |
[Kotlin 문법] 2. 변수 type 지정하기 (0) | 2024.06.05 |
[Kotlin 문법] 1. 함수와 변수 - fun과 val, var (0) | 2024.06.04 |