본문 바로가기

스위프트(Swift)

스위프트(Swift) - 컬렉션 타입 세트(set)

반응형

스위프트 데이터 타입 세트

스위프트에서 컬렉션 타입인 세트(set)를 살펴보겠습니다. 세트는 말 그대로 공통적인 것들을 묶어놓은 것이라고 볼 수 있습니다. 배열과 반대로 순서가 중요하지 않고, 유일한 값들로 채우려고 할 때 세트가 유용합니다.

 

1. 세트(set) 생성

var animal: set<String> = set<String>()
// String 타입의 set를 생성.  이니셜라이저를 이용해 생성한 비어있는 set 입니다.

var aniaml2 : set<String> = []
// 위의 의미와 동일하나, 조금 더 간편하게 축약된 형태로 set을 생성합니다.

set을 활용할 때는 웬만하면 축약 등의 형태보다는 정확하게 명시해주는 것이 좋습니다. 배열에서 []를 자주 사용하기 때문에 자칫 헷갈려서 오류를 발생할 위험이 있거든요.

 

2. 세트(set) 기본 프로퍼티

var animal: Set<String> = ["dog", "cat", "monkey", "lion", "dog"]
// String 타입의 Set을 선언과 동시에 초기화를 합니다.

print(animal.isEmpty)
// animal이 비어있는지 여부를 확인합니다.

animal.insert("tiger")
// animal에 값을 한 개 추가합니다.

print(animal.count)
// Set animal이 가진 값의 수를 세지만, 중복되는 것은 제외합니다.

print(animal.remove("cat")
// 요소가 삭제되면 해당 값을, 삭제되지 않으면 nil을 반환합니다.

세트 역시 기본적으로 요소를 추가하거나, 삭제를 할 수 있도록 프로퍼티를 제공하고 있고, 또 그것들이 정상적으로 수행되었는지 판단할 수 있도록 하고 있습니다.

 

3. 세트(set) 활용

세트는 우리가 집합으로 활용하기에 아주 안성맞춤인 타입인데요. 유일한 값으로 되어 있기 때문에 특히 그렇습니다. 다른 세트와의 교집합이나, 합집합, 여집합 등을 계산해야 할 때 좋습니다.

let number: Set<Int> = [1, 3, 4, 6, 7, 9]
let number2: Set<Int> = [2, 5, 6, 8, 9, 10]
// Int형의 Set타입

print(number.intersection(number2))
// 프로퍼티를 통해 두 set의 교집합을 구할 수 있습니다.

print(number.union(number2))
// 프로퍼티를 통해 두 set의 합집합을 구할 수 있습니다.

let all_num: Set<Int> = number.union(number2)
// 하나의 Set을 선언과 동시에 number과 number2의 합집합으로 초기화 합니다.

print(number.isSubset(of:all_num))
// number가 all_num의 부분으로 속해있는지를 확인합니다.

이 외에 다양한 활용에 대해서는 추후 따로 작성해 보도록 하겠습니다.

반응형