HIT해
[Swift 기초문법 - 19] Set 본문
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의 특징
- 고유성: Set는 중복된 값을 허용하지 않습니다. 따라서 중복된 값을 걸러내야 할 때 유용하다.
- 빠른 탐색: Set는 내부적으로 해시 테이블을 사용하기 때문에 요소를 빠르게 검색할 수 있다.
- 순서 없음: Set는 요소의 순서를 보장하지 않으므로 순서가 중요하지 않은 데이터에 적합하다.
결론
Swift의 Set는 중복 없는 값들의 집합을 효율적으로 관리할 수 있는 강력한 컬렉션 타입입니다. 고유한 값을 유지하고 빠른 검색이 필요한 상황에서 Set를 사용하면 효과적이라고 한다!
'Swift > Swift 기초문법' 카테고리의 다른 글
[Swift 기초문법 - 21] 프로토콜 (0) | 2024.07.16 |
---|---|
[Swift 기초문법 - 20] Struct Method (0) | 2024.07.16 |
[Swift 기초문법 - 18] Struct mutating (0) | 2024.07.12 |
[Swift 기초문법 - 17] Error (0) | 2024.07.12 |
[Swift 기초문법 - 16] 메소드 매개변수 inout (0) | 2024.07.12 |