CS/Kotlin

[Kotlin 문법] 3. Collection 자료구조

졔졔311 2024. 6. 5. 17:10
728x90
반응형

자료구조 모임을 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

 

728x90
반응형