Collection
예전에 List에 관한 공부를 하였는데, 그 때도 언급했듯이 Collection Class에는 List, Set, Map class가 있다. 따라서 이번 시간에는 Set과 Map에 대한 내용이다.
Set
정의 및 특징
- List와 달리 순서가 정렬되지 않으며 중복이 허용되지 않는 컬레션
- 인덱스로 위치를 지정하여 객체 참조 불가
- contains로 객체의 유무 확인 가능
종류
- **set
, MutableSet ** - List와 마찬가지로 객체의 추가, 삭제가 가능한지 여부에 따라 사용
- 추가는 add(데이터), 삭제는 remove(데이터): List와 동일
Set을 이용한 코드를 확인해보자.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
fun main(){
val a = mutableSetOf("A","B","C")
for(item in a){
println("${item}")
} //A B C
a.add("D")
println(a) // [A, B, C, D]
a.remove("B")
println(a) // [A, C, D]
println(a.contains("B")) // false
}
Map
정의 및 특징
- 객체를 넣을 때 그 객체를 찾아낼 수 있는 Key를 쌍으로 넣어주는 컬렉션
- key: 객체를 찾기 위한 값
- value: key와 연결된 객체
- 이런 구조 때문에 객체의 위치가 아닌 고유한 key를 통해 객체를 참조
- 같은 key에 다른 객체를 넣으면 기존 객체가 대체됨
종류
- Map<K, out V>, MutableMap<K,V>
- List, Set과 마찬가지로 객체의 추가, 삭제가 가능한지 여부에 따라 사용
- 추가는 put(키, 값), 삭제는 remove(키)
사용법
- mutableMapOf(key to value)
- Key와 Value는 MutableMap.MutableEntry 객체로 들어있기 때문에 속성인 key와 value를 참조하여 사용
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
fun main(){ val b = mutableMapOf("A" to "Apple", "B" to "Banana", "C" to "Carrot") // 참조하여 사용 for(entry in b){ println("${entry.key} : ${entry.value}") } // A : Apple B : Banana C : Carrot b.put("G" , "Grapes") println(b) // {A=Apple, B=Banana, C=Carrot, G=Grapes} b.remove("A") println(b) // {B=Banana, C=Carrot, G=Grapes} //인덱스 형태로 참조 println(b["B"]) // Banana }
참고사항
- List, Set, Map 클래스는 컬렉션 함수와 사용할 때 더욱 유용하다.