Kotlin Set, MutableSet 추가, 삭제, 프로퍼티

Notepad96

·

2020. 11. 22. 22:26

300x250

 

 

 


1. Set, MutableSet

 

SetMutableSet 또한 List와 MutableList의 관계처럼 불변과 가변의 차이를 갖는다.

 

 

Set을 상속받는 MutableSet

public interface MutableSet<E> : Set<E>, MutableCollection<E> {
    ...
}

 

 

변수 선언 시 var과 val 차이와 같다고 생각하면 간단하다.

 

 

 

 

 

Set은 의미 그대로 집합처럼 중복되지 않는, 고유한 원소만을 갖는다.

 

 

따라서 집합과 관련된 연산이 필요하거나 고유한 데이터만을 저장하여야 할 경우 사용할 수 있다.

 

 

 

Kotlin set 합집합, 차집합, 교집합 - union, subtract, intersect

1. 합집합, 차집합, 교집합 Set은 집합과 같이 고유한 원소만을 갖을 수 있다. 2020/11/22 - [Kotlin/Collections] - Kotlin Set, MutableSet 추가, 삭제, 프로퍼티 Kotlin Set, MutableSet 추가, 삭제, 프로퍼티..

notepad96.tistory.com

 

 

 


2. 코 드

환경 : Kotlin Version = 1.4.10, JVM

fun main(args : Array<String>) {

    //var ms = mutableSetOf<Int>()
    var ms = mutableSetOf(1, 1, 2, 2, 4, 3)

    println("\n===============MutableSet====================")
    println(ms)


    println("\n=================삽 입================")
    ms.add(6)   // 맨 뒤에 6 삽입
    // ms += 5  // var을 사용하면 사용 불가   // plusAssign
    ms.addAll(Array(3, {8} ))   // 중복이 불가하므로 하나만 추가된다

    for(i in ms.indices) {  // index를 사용하여서 루프
        print("${ms.elementAt(i)} ")
    }
    println()



    println("\n================정 렬=================")
    ms = ms.toSortedSet()   // 오름차순 정렬
    // ms = ms.toSortedSet(compareByDescending { it })   // 내림차순 정렬
    ms.forEach { print("${it} ") }
    println()



    println("\n================삭 제=================")
    if(ms.remove(1)) println("1 삭제 성공!") else println("1 삭제 실패!")   // 1제거
    ms.removeAll(arrayOf(2, 3))     // 2, 3 제거
    println(ms)



    println("\n================프로퍼티=================")
    println("길이 : ${ms.size}")
    println("인덱스 Range : ${ms.indices}")



    println("\n================추 가=================")
    println("최대값 : ${ms.max()}")
    println("평균 : ${ms.average()}")
    println("합 : ${ms.sum()}")
    println("찾기 : ${ms.indexOf(6)}")    // 6이 있는 index 1
    println("찾기 : ${ms.indexOf(5)}")    // 5는 존재않으므로 -1

    ms.clear()
    if(ms.isEmpty()) println("MutableSet이 비었습니다.")

}

 

결 과

 

- set의 경우 list와 달리 생성자가 없다. 따라서 빈 mutableSet을 생성하고 싶다면 mutableSetOf를 사용하지만 타입을 명시해 주어야 한다.

 

 

 

 

- 추가는 리스트와 동일하게 add 를 사용하여 할 수 있으며 set은 중복된 원소를 갖을 수 없으므로 같은 원소를 여러 개 넣어도 하나만 존재한다. ( 사실 삽입 시 이미 존재하면 삽입을 하지 않는 것이다. )

 

 

 

- index로 접근하기 위해서는 elementAt 함수를 사용할 수 있다.

 

 

 

- 정렬을 toSortedSet을 사용하여 Set타입으로 반환하거나 sorted를 사용하여 정렬된 List 타입으로 받을 수 있다.

 

위 예시에서는 ms의 다시 저장하기 위하여 ms를 var로 선언하였다.

 

 

 

 

- max, average, sum 와 같은 함수들을 지원하며 각각 최대값, 평균, 합을 구할 수 있다.

 

 

 

 

- indexOf를 사용하면 인수의 해당하는 값이 존재하는 지 여부를 알 수 있으며

 

존재한다면 해당 원소가 존재하는 index의 값을 반환받으며

 

존재하지 않는다면 -1을 반환 받는다.

 

 

 

 

 


3. 참 조

 

 

MutableSet - Kotlin Programming Language

 

kotlinlang.org

300x250