Set 세트
자주사용하는 메서드
var letters = Set<String>()
//값 넣기
letters.insert("Classical Music")
//초기화
letters = []
var favoriteGenres: Set<String> = ["Rock", "Classical", "Hip hop"]
favoriteGenres.isEmpty // false
favoriteGenres.count // 3
favoriteGenres.contains("Rock") // true
favoriteGenres.randomElement() // random element 출력 ex)"Hip hop"
//업데이트 - 삽입, 교체, 추가
//배열에서 사용하는 append가 없음
var set1: Set<Int> = [1,1,2,2,3,3]
set1.update(with: 1) // 1 -> 기존에 있던 요소이므로 값을 옵셔널 타입으로 리턴
set1.update(with: 7) // nil -> 기존에 없던 요소이므로 Set에 요소가 추가되고 nil 리턴
set1.remove(1) // 1 -> 삭제된 요소를 리턴
set1 // [2,3,7]
set1.remove(5) // nil -> 존재하지 않는 요소를 삭제했을 때는 에러는 발생하지 않고 nil 리턴
// 전체요소 삭제
set1.removeAll()
set1.removeAll(keepingCapacity: true) // 요소는 제거하지만 메모리는 제거하지 않는다
---------------------------------------------------------------------------------
//많이는 안쓰이는 함수들
let oddDigits: Set = [1, 3, 5, 7, 9]
let evenDigits: Set = [0, 2, 4, 6, 8]
let singleDigitPrimeNumbers: Set = [2, 3, 5, 7]
// 합집합
oddDigits.union(evenDigits).sorted()
//[0,1,2,3,4,5,6,7,8,9]
// 교집합
oddDigits.intersection(evenDigits).sorted()
//[]
//차집합
oddDigits.subtracting(singleDigitPrimeNumbers).sorted()
//[1, 9]
//대칭 차집합
oddDigits.symmetricDifference(singileDIgitPrimeNumbers).sorted()
//[1, 2, 9]