세트 (Set)
세트는 같은 타입의 데이터를 순서 없이 하나의 묶음으로 저장하는 형태의 컬렉션 타입입니다.
세트 내의 값은 모두 유일한 값, 즉 중복된 값이 존재하지 않습니다.
*순서가 중요하지 않거나 각 요소가 유일한 값이어야 하는 경우에 사용
1. 세트의 선언과 생성
// 빈 세트의 생성
var emptySet : Set<String> = Set<String>()
var emptySet : Set<String> = []
// 대괄호를 이용해 초기화
var names : Set<String> = ["name1", "name2", "name3","name4"]
*Array에서 사용가능한 축약형(Array<Int> -> [Int])이 Set에서는 불가능 사용 불가능
var names : String = ["name1", "name2", "name3","name4"]
print(type(of: names)) // Array<String>
위 축약형을 사용할 경우 타입 추론에 의해 컴파일러는 Set 가 아닌 Array로 타입을 지정합니다.
2. 프로퍼티
isEmpty // 빈 값 체크 (Bool)
count // 중복된 값은 허용하지 않아 카운팅 되지 않습니다.
3. 추가 및 삭제
// 추가
names.insert("name5")
// 삭제
names.rem("name5")
4. 세트의 활용
- 집합 연산-
let koreaClassStudent : Set<String> = ["jenny", "yagom", "chulsoo", "haha", "minsoo"]
<교집합>
let intersectSet : Set<String> = englishClassStudent.intersection(koreaClassStudent) print(intersectSet) // ["yagom", "chulsoo"]
<여집합의 합>
let symmetricDiffSet : Set<String> = englishClassStudent.symmetricDifference(koreaClassStudent)
print(symmetricDiffSet) // ["john", "haha", "minsoo", "jenny"]
print(symmetricDiffSet) // ["john", "haha", "minsoo", "jenny"]
<합집합>
let unionSet : Set<String> = englishClassStudent.union(koreaClassStudent)
print(unionSet) // ["john", "yagom", "chulsoo", "haha", "minsoo", "jenny"]
<차집합>
let subtractSet : Set<String> = englishClassStudent.subtracting(koreaClassStudent)
print(subtractSet) // ["john"]
print(unionSet) // ["john", "yagom", "chulsoo", "haha", "minsoo", "jenny"]
<차집합>
let subtractSet : Set<String> = englishClassStudent.subtracting(koreaClassStudent)
print(subtractSet) // ["john"]
- 포함관계 연산 -
print(새.isDisjoint(with: 포유류)) // 서로 베타적인지 - true
print(새.isSubset(of: 동물)) // 새가 동물의 부분집합 인가 - true
print(동물.isSuperset(of: 포유류)) // 동물은 포유류의 전체 집합인가 - true
print(동물.isSuperset(of: 새)) // 동물은 생의 전체 집합인가 - true
출처 : 야곰님의 스위프트 프로그래밍
댓글 없음:
댓글 쓰기