본문 바로가기

Language/Kotlin

[Kotlin] 컬렉션(2) Set과 Map

728x90
반응형

 

https://winterflower.tistory.com/399

 

[Kotlin] 컬렉션(1) 리스트

리스트는 데이터를 모아 관리하는 컬렉션 클래스를 상속받는 서브 클래스 중 가장 단순한 형태로, 여러 개의 데이터를 원하는 순서로 넣어 관리하는 형태이다. 리스트에는 두 가지가 있다. List :

winterflower.tistory.com

컬렉션 1탄에서는 컬렉션 중 List에 대해 알아보았다. 이번 게시물에서는 나머지 컬렉션인 Set과 Map을 알아보자.

Set

: 리스트와 달리, 순서가 정렬되지 않으며 중복이 허용되지 않는 컬렉션

인덱스로 위치를 지정하여 객체를 참조할 수는 없으며 contains로 객체가 set 안에 존재하는지를 확인하는 식으로만 확인한다.

sampleSet.contains(”디모”) → sampleSet에 디모가 있는지 알려줘

 

Set 종류

  1. Set : 생성 시에 넣은 객체를 대체, 추가, 삭제 할 수 없음
  2. MutableSet : 생성 시에 넣은 객체를 대체, 추가, 삭제가 가능

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("귤"))
}

// 출력 :
// 귤
// 바나나
// 키위
// [귤, 바나나, 키위, 자몽]
// [귤, 키위, 자몽]
// true

Map

: 객체를 넣을 때, 그 객체를 찾아낼 수 있는 Key를 쌍으로 넣어주는 컬렉션

 

key와 value는 내부적으로 MutableMap.MutableEntry의 객체로 담겨져 있으며, 이런 구조 때문에 객체의 위치가 아닌 고유한 key를 통해 객체를 참조한다.

sampleMap[”디모”] → 디모라는 key에 연결된 객체를 알려줘

 

같은 key에 다른 객체를 넣으면 기존의 객체가 대체되므로 주의!

 

Map 종류

  • Map<K, out V> : 생성 시에 넣은 객체를 대체, 추가, 삭제 할 수 없음
  • MutableMap<K, V> : 생성 시에 넣은 객체를 대체, 추가, 삭제가 가능

MutableMap에서는 요소의 추가, 삭제 가능

  • 요소의 추가 : put(키, 값)
  • 삭제 : remove(키)
fun main(){
    val a = mutableMapOf("레드벨벳" to "음파음파",
                                        "트와이스" to "FANCY",
                                        "ITZY" to "ICY")

    for(entry in a){
        println("${entry.key} : ${entry.value")
    }

    a.put("오마이걸", "번지")
    println(a)

    a.remove("ITZY")
    println(a)

    println(a["레드벨벳"])
}

// 출력 :
// 레드벨벳 : 음파음파
// 트와이스 : FANCY
// ITZY : ICY
// {레드벨벳=음파음파, 트와이스=FANCY, ITZY=ICY, 오마이걸=번지}
// {레드벨벳=음파음파, 트와이스=FANCY, 오마이걸=번지}
// 음파음파
728x90
반응형

'Language > Kotlin' 카테고리의 다른 글

[Kotlin] 컬렉션 함수 (2)  (0) 2023.09.24
[Kotlin] 컬렉션 함수 (1)  (0) 2023.09.22
[Kotlin] Data Class와 Enum Class  (0) 2023.09.21
[Kotlin] 중첩클래스와 내부클래스  (0) 2023.09.20
[Kotlin] 함수의 다양한 기능  (0) 2023.09.20