HIT해

[Swift 기초문법 - 19] Set 본문

Swift/Swift 기초문법

[Swift 기초문법 - 19] Set

힛해 2024. 7. 16. 04:04
728x90

Swift에서 Set는 고유한 값들을 순서 없이 저장하는 컬렉션 타입이다. Set는 Array와 유사하지만, 중복된 값을 허용하지 않으며 순서가 중요하지 않은 경우에 유용하게 사용할 수 있다. 이번 포스팅에서는 Swift Set의 기본 사용법과 주요 특징들을 예제와 함께 알아보겠습니다.

Set의 기본 사용법

Set를 선언하고 초기화하는 방법은 매우 간단합니다. Swift에서는 Set 타입을 사용하여 중복 없는 값들의 집합을 생성할 수 있습니다.

var fruitSet: Set<String> = ["Apple", "Banana", "Orange"]
print(fruitSet)
// 출력: ["Apple", "Banana", "Orange"]

여기서 주의할 점은 Set의 출력 순서는 정의되지 않는다는 것입니다. 따라서 순서가 중요한 경우에는 Array를 사용하는 것이 좋습니다.

Set의 주요 기능

Set는 다양한 유용한 메서드와 속성을 제공하여 컬렉션을 쉽게 조작할 수 있게 합니다.

1. 요소 추가 및 삭제

Set에 요소를 추가하거나 삭제하는 방법은 다음과 같다.

fruitSet.insert("Mango")
print(fruitSet)
// 출력: ["Apple", "Banana", "Orange", "Mango"]

fruitSet.remove("Banana")
print(fruitSet)
// 출력: ["Apple", "Orange", "Mango"]

 

언래핑을 한 후 안전하게 삭제하는 방법도 있다.

if let indexToRemove = tmpSet.firstIndex(of: "element"){
	print("indexToRemove :", indexToRemove)
    tmpSet.remove(at: indexToRemove)
}

 

2. 포함 여부 확인

Set에 특정 요소가 포함되어 있는지 확인할 때는 contains 메서드를 사용합니다:

if fruitSet.contains("Apple") {
    print("Apple이 포함되어 있습니다.")
} else {
    print("Apple이 포함되어 있지 않습니다.")
}
// 출력: Apple이 포함되어 있습니다.

3. 집합 연산

Set는 합집합, 교집합, 차집합 등의 집합 연산을 지원한다

let anotherSet: Set<String> = ["Peach", "Banana", "Mango"]

// 합집합
let unionSet = fruitSet.union(anotherSet)
print(unionSet)
// 출력: ["Apple", "Peach", "Mango", "Orange"]

// 교집합
let intersectionSet = fruitSet.intersection(anotherSet)
print(intersectionSet)
// 출력: ["Mango"]

// 차집합
let subtractingSet = fruitSet.subtracting(anotherSet)
print(subtractingSet)
// 출력: ["Apple", "Orange"]

4. 순회

Set은 딕셔너리와 같은 컬렉션이기 떄문애 for in 문법도 가능하다.

for fruit in fruitSet {
    print(fruit)
}
// 출력: Apple, Orange, Mango (순서는 랜덤)

Set의 특징

  1. 고유성: Set는 중복된 값을 허용하지 않습니다. 따라서 중복된 값을 걸러내야 할 때 유용하다.
  2. 빠른 탐색: Set는 내부적으로 해시 테이블을 사용하기 때문에 요소를 빠르게 검색할 수 있다.
  3. 순서 없음: Set는 요소의 순서를 보장하지 않으므로 순서가 중요하지 않은 데이터에 적합하다.

결론

Swift의 Set는 중복 없는 값들의 집합을 효율적으로 관리할 수 있는 강력한 컬렉션 타입입니다. 고유한 값을 유지하고 빠른 검색이 필요한 상황에서 Set를 사용하면 효과적이라고 한다!