개발(Android)/kotlin syntax

[Kotlin syntax] Collections (2) Set, Map

shinyelee 2022. 4. 9. 15:30

[코틀린 문법] 셋, 맵

Set

// Set //

// 리스트와 달리 순서가 정렬되지 않으며 중복이 허용되지 않는 컬렉션
// 인덱스로 위치 지정해 객체 참조하기 불가능
// contains로 객체가 set 안에 존재하는지를 확인하는 식으로만 사용

fun main () {

    val testSet1 = mutableSetOf("a", "b", "c")

    println(testSet1)
//    [a, b, c]

    // add로 데이터 추가
    testSet1.add("d")
    testSet1.add("e")

    println(testSet1)
//    [a, b, c, d, e]

    // 중복을 자동으로 거르기 때문에 e는 한 번만 추가됨
    testSet1.add("e")
    testSet1.add("e")
    testSet1.add("e")

    println(testSet1)
//    [a, b, c, d, e]

    // remove로 데이터 삭제
    testSet1.remove("e")

    println(testSet1)
//    [a, b, c, d]



    val a = mutableSetOf("귤", "바나나", "키위")

    for (item in a) {
        println("${item}")
    }
//    귤
//    바나나
//    키위

    a.add("자몽")
    println(a)
//    [귤, 바나나, 키위, 자몽]

    a.remove("바나나")
    println(a)
//    [귤, 키위, 자몽]

    println(a.contains("귤"))
//    true

}

Map

// Map //

// 객체를 넣을 때 그 객체(value)를 찾아낼 수 있는 key(객체를 찾기 위한 값)를 쌍으로 넣어주는 컬렉션
// 객체의 위치가 아닌 고유한 키를 통해 객체를 참조한다는 특징을 가짐
// 같은 키에 다른 객체를 넣음 -> 기존 객체가 대체됨
// put으로 데이터 추가, remove로 데이터 삭제
// 인덱스는 겁나 귀찮음 -> map 사용

fun main () {

    val tes1 = mutableMapOf<Int, String>()

    test1.put(5, "유리")
    tes1t.put(10, "철수")
    test1.put(15, "짱구")
    test1.put(22, "훈이")

    println(test1[15])
//    짱구



    val b = mutableMapOf("아이브" to "LOVE DIVE",
                         "아이들" to "TOMBOY",
                         "아이유" to "GANADARA")

    for (entry in b) {
        println("${entry.key} : ${entry.value}")
    }
//    아이브 : LOVE DIVE
//    아이들 : TOMBOY
//    아이유 : GANADARA

    b.put("레드벨벳", "Feel My Rhythm")
    println(b)
//    {아이브=LOVE DIVE, 아이들=TOMBOY, 아이유=GANADARA, 레드벨벳=Feel My Rhythm}

    b.remove("아이유")
    println(b)
//    {아이브=LOVE DIVE, 아이들=TOMBOY, 레드벨벳=Feel My Rhythm}

    println(b["레드벨벳"])
//    Feel My Rhythm

}
fun main () {

    // map 복습 //

    val testMap1 = mutableMapOf<Int, String>()

    testMap1.put(5, "유리1")
    testMap1.put(15, "유리2")
    testMap1.put(25, "유리3")
    testMap1.put(35, "유리4")

    println(testMap1)
//    {5=유리1, 15=유리2, 25=유리3, 35=유리4}

    for (j in testMap1) {
        println(j)
    }
//    5=유리1
//    15=유리2
//    25=유리3
//    35=유리4



    // map 다른 방법 //

    val testMap2 = mutableMapOf<Int, String>()

    testMap2[5] = "철수1"
    testMap2[15] = "철수2"
    testMap2[25] = "철수3"
    testMap2[35] = "철수4"

    println(testMap2)
//    {5=철수1, 15=철수2, 25=철수3, 35=철수4}

    for (k in testMap2) {
        println(k)
    }
//    5=철수1
//    15=철수2
//    25=철수3
//    35=철수4

}
fun main() {

    // key(키)-value(값) 저장
    val cards = mapOf("Jack" to 11, "Queen" to 12, "King" to 13)
    println(cards)
//    {Jack=11, Queen=12, King=13}

    // 키 사용해 값 검색
    val jackValue = cards["Jack"]
    println(jackValue)
//    11

    // mutable map이어야
    val cards2 = mutableMapOf("Jack" to 11, "Queen" to 12, "King" to 13)
    println(cards2)
//    {Jack=11, Queen=12, King=13}
    
    // 아이템 추가 및 삭제 가능
    cards2["Ace"] = 1
    println(cards2)
//    {Jack=11, Queen=12, King=13, Ace=1}


    // mutable map으로 변환하기
    val cards3 = mapOf("Jack" to 11, "Queen" to 12, "King" to 13)
    println(cards3)
//    {Jack=11, Queen=12, King=13}
    
    val mutableCards = cards.toMutableMap()
    mutableCards["Ace"] = 1
    println(mutableCards)
//    {Jack=11, Queen=12, King=13, Ace=1}

}

참고

 

[입문편] 안드로이드를 위한 코틀린(Kotlin) 문법 - 인프런 | 강의

코틀린 문법 기초 강의입니다. 안드로이드 앱을 코틀린 언어로 개발하고 싶으신 분들을 위한 강의이고, 기초부터 튼튼하게 코틀린 문법을 재미있게 공부할 수 있습니다., - 강의 소개 | 인프런...

www.inflearn.com

반응형