Kotlin Set, MutableSet 추가, 삭제, 프로퍼티
Notepad96
·2020. 11. 22. 22:26
1. Set, MutableSet
Set과 MutableSet 또한 List와 MutableList의 관계처럼 불변과 가변의 차이를 갖는다.
Set을 상속받는 MutableSet
public interface MutableSet<E> : Set<E>, MutableCollection<E> {
...
}
변수 선언 시 var과 val 차이와 같다고 생각하면 간단하다.
Set은 의미 그대로 집합처럼 중복되지 않는, 고유한 원소만을 갖는다.
따라서 집합과 관련된 연산이 필요하거나 고유한 데이터만을 저장하여야 할 경우 사용할 수 있다.
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. 참 조
'Kotlin > Collections' 카테고리의 다른 글
Kotlin Map, MutableMap 추가, 삭제, 프로퍼티 (0) | 2020.11.23 |
---|---|
Kotlin set 합집합, 차집합, 교집합 - union, subtract, intersect (0) | 2020.11.23 |
Kotlin list for문 - index loop (0) | 2020.11.22 |
Kotlin List, MutableList 추가, 삭제, 프로퍼티 (0) | 2020.11.22 |
Kotlin ArrayList<Int> vs. IntArray - 리스트, 배열 (0) | 2020.11.21 |