set
은 list와 달리 순서가 정해져있지 않고 중복이 혀용되지 않는 컬렉션(collection)
이다.
따라서 set은 index로 위치를 지정하여 객체를 참조할 수 없으며, setName.contains(원소_이름)
으로 포함관계를 확인할 수 있다.
set 역시 MutableSet이 존재한다. 리스트와 마찬가지로 객체의 추가 삭제가 가능한지의 여부에 따라 사용하게 된다.
추가는 add
, 삭제는 remove
를 이용한다.
fun main() {
val a = mutableSetOf("귤", "바나나", "키위")
for (item in a) {
println("${item}")
}
a.add("자몽")
println(a)
a.remove("바나나")
println(a)
println(a.contains("귤"))
}
map은 객체를 넣을 때 그 객체를 찾아낼 수 있는 key를 쌍으로 넣어주는 컬렉션(collection)
이다.
key와 value
key: 객체를 찾기 위한 값
value: key와 연결된 객체
내부적으로는 MutableMap.MutableEntry
객체에 담겨있으며, 이러한 구조로 인해 객체의 위치가 아닌 객체의 키를 통해 참조하는 특징을 갖고 있다. 이때 같은 키 값에 다른 value를 넣으면 기존의 객체값은 대체되니 사용에 주의가 필요하다.
맵 역시 추가 삭제가 가능한 MutableMap<K, V>
이 존재한다.
추가는 put(키, 값)
, 삭제는 remove(키)
로 가능하다.
fun main() {
// key와 value를 to로 이어주고 있음
val a = mutableMapOf("Android" to "Kotlin",
"Vue.js" to "Javascript",
"Spring" to "Java",
"Django" to "Python")
// 하나씩 꺼내서 출력해보자.
// 이때 key, value는 그 자체로 속성값이다.
for (item in a) {
println("${item.key}: ${item.value}")
}
// put으로 새 key와 value를 넣어보자.
a.put(".Net", "C#")
println(a)
// remove로 객체를 삭제해보자.
a.remove("Vue.js")
println(a)
// 참조해보자.
println(a["Android"])
}