본문 바로가기

공부 자료/코틀린[Kotlin]

[Atomic 26] 집합 (feat. Set)

각각의 값이 오직 하나만 존재하는 컬렉션, Set

 

 

집합은 수학에서 배웠던 내용을 거의 그대로 생각하면 되기 때문에 이해가 어려운 아톰은 아니다.

이전 컬렉션들과 어떻게 다르고 어떻게 쓰이는지 알아볼 예정이다.

 

 


 

[ 집합, Set ]

 

Set

: in, contains()를 이용해 원소 검사가 가능

: 중복이 없음 (즉, 동일한 원소가 있으면 하나의 원소로 취급됨)

: 원소의 순서는 중요하지 않음

: 집합간의 포함여부도 containsAll()을 통해 확인 가능

: union(합집합), intersect(교집합), 차집합(subtract, -) 점 표기법 / 중위 표기법을 사용해 연산이 가능함

: toSet()을 통해 List에서의 중복 제거(distinct()도 가능), 문자열에 대한 문자들의 집합을 얻을 수 있음

 

import atomictest.eq

fun main(){
	val intSet = setOf(1,1,2,3,9,9,4)
    
    // 중복 없음, 순서 중요하지 않음
    intSet eq setOf(1,2,3,4,9)
    
    // 원소 검사
    (9 in intSet) eq true
    intSet.contains(9) eq true
    intSet.containsAll(setOf(1,2,9)) eq true
    
    // 합집합
    intSet.union(setOf(3,4,5,6)) eq setOf(1,2,3,4,5,6,9)
    
    // 교집합
    intSet intersect setOf(0,1,2,7,8) eq setOf(1,2)
    
    // 차집합
    intSet subtract setOf(0,1,9,10) eq setOf(2,3,4)
    intSet-setOf(0,1,9,10) eq setOf(2,3,4)  
    
    // list의 중복 제거 및 문자열 집합
    val list = listOf(3,3,2,1,2)
    list.toSet() eq setOf(1,2,3)
    list.distinct() eq listOf(3,2,1)
    "aabbcc".toSet() eq setOf('a', 'b', 'c')
}

 

 


[ 읽기 전용 Set, 가변 Set ]

 

Set도 List와 동일하게 가변 / 불변에 대한 Set이 존재하는데,

setOf()의 결과는 읽기 전용 Set, mutableSetOf()는 가변 Set이며,

이외의 특징은 List와 동일하기 때문에 아래 블로깅을 참고하기 바란다.

 

2024.01.25 - [공부 자료/코틀린[Kotlin]] - [Atomic 24] 리스트 (feat. List / MutableList)

 

[Atomic 24] 리스트 (feat. List / MutableList)

다른 객체를 담는 객체 컨테이너, List 이번 학습은 리스트에 대한 아톰이다. 자바에서는 리스트 보다는 배열은 우선으로 하여 배웠는데, 코틀린에서는 리스트를 먼저 배운다. 기본적인 컨테이너

kcode-recording.tistory.com

 


 

[ 오늘의 학습 소감 ]

 

오늘은 이전에 학습했던 24 아톰의 List의 내용과 중복되는 부분이 있었고, 집합에 대한 특징은 기본적으로 중/고등학교 때 배웠기 때문에 크게 어려운 아톰 학습은 아니었다. List의 내용과 중복되는 부분이 있었지만 해당 부분에 대해서는 중요한 파트라고 생각하기 때문에 해당 아톰에서는 그에 대한 설명이 생략되어 넘어갔지만 꼼꼼하게 살펴보고 넘어가는 것이 좋을 것 같은 아톰이었다.