프로그래밍/Kotlin

[코틀린 / Kotlin] 컬렉션 Set , Map (mutableSetOf() , Pair)

pupu91 2022. 10. 20. 18:19
반응형

 

Set

mutableSetOf() : 변경 가능한 집합을 생성하는 함수
   var mutableSet = mutableSetOf("축구","농구","수영")
    println("mutableSet default init $mutableSet")
    
    /* 값 추가 */
    mutableSet.add("야구")
    println("mutableSet add element $mutableSet")

    mutableSet.add("축구") //set에는 중복 값을 추가할 수 없다
    println("mutableSet add duplicated element $mutableSet")

    /* 값 제거 */
    mutableSet.remove("축구")
    println("mutableSet remove element : $mutableSet")


    /* get이나 idex로 하나하나의 요소 접근 불가능
    * get 메소드나 인덱스 접근 연산자 사용 불가*/
    //mutableSet.get(0)
    //mutableSet[0]

    /* 반복문을 통해 순회 가능 */
    /* element 순회 반복문 */
    for(element in mutableSet.iterator()){
        print("$element ")
    }
    println()

    /* for in 문은 자동으로 iterator를 이용 */
    for(element in mutableSet){
        print("$element ")
    }
    println()

}

출력 결과
mutableSet default init [축구, 농구, 수영]
mutableSet add element [축구, 농구, 수영, 야구]
mutableSet add duplicated element [축구, 농구, 수영, 야구]
mutableSet remove element : [농구, 수영, 야구]
농구 수영 야구 
농구 수영 야구
반응형

 

Map

Pair 타입은 객체 두 개를 넣을 수 있는 타입으로 Map에서 key와 value의 쌍이 Entry의 개념을 표현하는 자료형
Infix 함수(두 개의 변수 가운데 오는 함수) to를 사용하여 Pair 객체를 생성할 수 있다.
fun main(){

    var pair: Pair<String, Int> = "key1" to 123  //이런 pair들을 담고 있는게 곧 map

    /* mutableMapOf() : 매개변수로 전달받은 Pair들을 이용하여 mutableMap을 만드는 함수 */
    var mutableMap = mutableMapOf(pair, "key2" to 234) //미리 선언해 놓은 pair전달,  바로 키와 벨류 생성해서 전달
    println("mutableMap : $mutableMap")

    
    /* put 사용하여 pair 추가 */
    mutableMap.put("key3", 345);
    println("mutableMap put pair : $mutableMap")

   
    /* 연산자를 사용하여 pair 추가 */
    mutableMap["key4"] = 456 //키 값을 인덱스 연산자 안에 넣고 = 뒤에 벨류 값 작성
    println("mutableMap put pair : $mutableMap")

    
    /* 이미 존재하는 키와 동일한 값을 입력하면 값이 덮어쓰기 된다.*/
    mutableMap["key1"] = 100
    println("mutableMap put pair with duplicated key : $mutableMap")

  
    /* pair 제거 */
    mutableMap.remove("key1")
    println("mutableMap remove pair : $mutableMap")

 
    /* 값 접근 */
    var valueFromKey3 = mutableMap.get("key3")
    println("valueFromKey3 : $valueFromKey3")

    
    /* index 로 값 접근 */
    println("valueFromKey4 : ${mutableMap["key4"]}")

    
    /* 읽기 전용 Map 생성*/
    var immutableMap = mapOf("key1" to 1, "key2" to 2)
    //immutableMap["key3"] =3 pair 추가 불가
    println("immutabelMap key1 : ${immutableMap["key1"]}") //key를 통해 value 읽기 접근

}

출력 결과
mutableMap : {key1=123, key2=234}
mutableMap put pair : {key1=123, key2=234, key3=345}
mutableMap put pair : {key1=123, key2=234, key3=345, key4=456}
mutableMap put pair with duplicated key : {key1=100, key2=234, key3=345, key4=456}
mutableMap remove pair : {key2=234, key3=345, key4=456}
valueFromKey3 : 345
valueFromKey4 : 456
immutabelMap key1 : 1
반응형