집합 자료형끼리는 집합 연산을 할 수 있음요
기본 집합 연산
집합 연산의 결과값은 집합으로 구성됨
union(_:) (합집합)
양쪽 집합에 있는 모든 아이템을 선택하여 새로운 집합을 만들어주는 메소드
공통으로 있는 아이템이라고 중복해서 추가되지 않음
subtract(_:)(차집합)
한쪽 집합에서 다른 한쪽과 공통되는 아이템을 제외하고 새로운 집합을 만들어주는 메소드
intersection(_:) (교집합)
양쪽 집합에서 공통되는 아이템만 선택하여 새로운 집합을 만들어주는 메소드
symmetricalDifference(_:)
양쪽 집합중에서 어느 한쪽에만 있는 아이템을 선택하여 새로운 집합을 만들어주는 메소드
양쪽 집합 모두에 공통으로 있는 아이템은 제외
*subtract(차집합)을 제외하고 나머지는 양쪽 집합의 위치가 바뀌어도 결과 값이 동일함
다른 것들은 모두 상수인데 oddDigits은 왜 변수일까?
-> substract메소드는 다른 메소드와 달리 실행 결과로 새로운 집합을 만들어 내지 않음
대상 집합에서 아이템을 제거,변경함
따라서, 대상이 되는 집합은 반드시 변수로 선언되어야 함
그리고 왜 sorted메소드를 왜 이어서 호출하지 않고 따로 호출해???(12, 13행)
-> 부분집합 때문임
부분집합과 포함관계 판단연산
수학시간에 부분집합에 대해 배운적이 있었음
집합 A의 모든 원소가 집합 B에도 있을 때 집합 A는 집합B의 부분집합이 됨
어느 한쪽 집합이 꼭 크지 않아도 A와 B집합의 원소가 같으면 부분집합이 성립한다고 할 수 있음
프로그래밍에서 집합 A와 B의 아이템이 모두 일치할때 A == B가 성립함
부분집합 관계를 확인해 주는 메소드 5개가 있음
isSubset(of:)
주어진 집합의 값 전체가 특정 집합에 포함되는지를 판단하여 true, false를 반환
isSuperset(of:)
주어진 집합이 특정 집합의 모든 값을 포함하는지를 판단하여 true,false를 반환
isSubSet과는 반대 상황을 판단하는 것으로, 집합이 다른 집합의 상위집합 역할을 하는거에 대한 판단을
담당하는 메소드라고 할 수 있음
isStrictSubset(of:) ,isStrictSuperset(of:)
두 집합이 특정 집합의 부분집합인지 아니면 상위집합인지를 판단하는 역할을 하지만,
두 집합이 서로 같은 경우의 결과값이 다르게 반환됨
두 집합이 서로 일치할 경우 수학적으로는 서로가 서로의 부분집합이자 상위집합이 될 수 있으므로
isSubset(of:), isSuperset(:of)메소드가 true를 반환하지만
isStrictSubset(of:), isStrictSuperset(of:)메소드는 이를 더 엄격하게 판단하여
정확히 부분집합, 또는 상위집합일 때만 true를 반환함
서로 일치하는 집합은 동일한 집합이지 부분집합이나 상위집합으로 판단하지 않는 다는 뜻
isDisjoint(with:)
두 집합 사이의 공통 값을 확인하여 아무런 공통 값이 없을 때 true를,
공통값이 하나라도 있으면 false를 반환함
6행
집합 B의 아이템은 3,5임
모두 집합 A에 속해 있어 B.isSubset(of:A)가 true임
8행
반대로 A가 집합 B의 상위집합이니 A.isSuperset(of:B)도 true를 반환함
10행
집합 A는 C를 부분 집합으로 가질 수 있으며 ,상위집합이므로 true를 반환함
12행
집합 B와 C는 서로 동일한 집합이므로 false를 반환함
14행
집합 A와D의 공통 값이 없으므로 true를 반환함
TIP)
배열의 중복값을 걸러내고 싶을때
중복된 값이 있으면 안되는 데이터 모음을 정의할 때 집합을 사용하면
값의 중복 여부를 직접 처리하지 않아도 되어 편리함
배열에서 중복된 값들을 걸러내고 싶을 때 직접 중복 확인 구문을 작성하기보다
배열 데이터를 집합 데이터로 변환 후 다시 배열로 변환하면 손쉽게 중복값들을 제거가능
A = Array(Set(A))
집합을 전체 순회하면서 중복 값이 또 있는지를 판단하고 삭제하는 구문쓸래?? 간단하게 이거쓸래??
'Swift랑 친해지기 > Swift 책보면서 정리해보기' 카테고리의 다른 글
[집단 자료형] 딕셔너리 (Swift) (0) | 2022.01.28 |
---|---|
[집단자료형] 튜플 (Swift) (0) | 2022.01.27 |
[집단자료형] 집합 Set (Swift) (0) | 2022.01.26 |
배열 아이템 동적 할당 방법 - 스위프트 (0) | 2022.01.24 |
배열정의 및 선언 - 스위프트(swift) (0) | 2022.01.19 |