Home Set과 Map
Post
Cancel

Set과 Map

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 클래스는 컬렉션 함수와 사용할 때 더욱 유용하다.