일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- HTML
- Hitit
- 계명대 이종호
- 개발
- TDD
- SWIFT
- 힛잇
- 자료구조
- jest
- 스벨트
- 스위프트
- 호키스
- 리액트
- hokidoki
- IOS
- 개발자
- data structure
- javascript
- 호키도키
- 이종호
- 계명대
- 자바스크립트 자료구조
- 자스민
- Svelte
- hokeys
- 리액트 예제
- react
- 비동기
- queue
- 자바스크립트
Archives
- Today
- Total
Dog foot print
[SWIFT] Set 집합 본문
Set이란 ?
Array
와 다르게 Set
은 공통된 값을 배열내에 저장 할 수 없는 자료구조입니다. Array
를 통해 Set을 구현 할 수도 있지만, 스위프트에서는 기본 집단 자료형으로 Set
을 제공합니다.
선언 및 초기화
import UIKit
let countrySet : Set= ["korea","korea","usa","japan","china"];
let nonset = ["korea","korea"];
//["usa", "korea", "china", "japan"]
//["korea", "korea"]
Set
의 리터럴은 배열과 동일한 []
대괄호를 사용한다. 그렇기에, 타입 어노테이션으로 Set
을 표시하지 않는다면, 배열로 인식되게 된다. 다음은 집합을 생성하는 다양한 예제이다.
let stringSet : Set<String> = ["korea","usa"]; //초기화 및 타입 선언
let numberSet = Set<Int>(); //초기화만
var boolSet : Set<Bool>; //변수 선언만
boolSet = [true,false]
Set
또한 배열과 동일하게, 초기 선언에서 집합내의 자료형들을 제네릭 형식으로 명시해줄 수 있다.
집합 동적 삭제 및 추가
var stringSet : Set<String> = ["korea","usa"];
stringSet.insert("japan");
stringSet.insert("china");
stringSet.insert("england");
print(stringSet);
["korea", "japan", "england", "usa", "china"]
stringSet.remove("japan");
print(stringSet)
["korea", "england", "usa", "china"]
stringSet.remove(at: stringSet.startIndex);
print(stringSet)
["england", "usa", "china"]
stringSet.removeAll()
print(stringSet)
[]
- insert : 집합의 마지막 인덱스 + 1 자리에 전달인자로 들어온 값을 넣는다.
- remove : 전달인자로 들어온 값을 집합에서 일치하는 버킷에서 삭제한다.
- remove(at : ) : int가 아닌 Set
.Index 자료형의 값에 해당하는 값을 삭제한다. - removeAll() : 집합 내에 있는 모든 값을 삭제한다.
순회
var stringSet : Set<String> = ["korea","usa"];
stringSet.insert("japan");
stringSet.insert("china");
stringSet.insert("england");
for country in stringSet{
print(country);
}
japan
usa
england
korea
china
집합 또한 iterable
한 자료형이기 때문에, 일반적인 배열처럼 for in
문을 통해 순회가 가능하다.
기본 집합 연산
var oddNubmer : Set = [1,3,5,7,9]
let evenNubmer : Set = [0,2,4,6,8]
let primeNubmer : Set = [1,2,3,5,7,11];
oddNubmer.intersection(primeNubmer).sorted()//교집합
oddNubmer.symmetricDifference(primeNubmer).sorted()//대칭차
oddNubmer.union(primeNubmer).sorted()//합집합
oddNubmer.subtract(primeNubmer);
oddNubmer.sorted()
[1,3,5,7];
[2,9,11];
[1,2,3,5,7,9,11];
[9];
- intersection : 교집합으로 전달인자로 전달된 집합과 공통되는 원소들만 가진 집합을 리턴한다.
- symmetricDifference : 대칭차로 두 집합의 공통되지 않은 원소들만 가진 집합을 리턴한다.
- union : 합집합으로 두 집합의 모든 원소를 가진 집합을 리턴한다.
- subtract : 차집합으로 두 집합의 공통되지 않은 원소만 남기고 메서드 실행 집합의 원소를 모두 지운다.
부분 집합과 포함관계 판단 연산
var oddNubmer : Set = [1,3,5,7,9]
let evenNubmer : Set = [0,2,4,6,8]
let primeNubmer : Set = [1,2,3,5,7,11];
oddNubmer.isSubset(of: primeNubmer)
oddNubmer.isSuperset(of: primeNubmer)
oddNubmer.isDisjoint(with: evenNubmer)
oddNubmer.isStrictSubset(of: primeNubmer)
false
false
true
false
- isSubset : 주어진 집합의 값 전체가 메서드 실행 집합에 포함되는지를 판단하여, boolean 값을 리턴한다.
- isSuperset : 주어진 집합이 특정 집합의 모든 값을 포함하는 지 판단한다.
- isDisjoint : 주어진 집합이 공통되지 않음을 판단한다.
- isStrictSubset : 주어진 집합이 메서드 실행 집합의 원소를 모두 포함하며, 다른 값이 하나라도 있는지를 판단한다.
#swift
반응형
'IOS > Swift' 카테고리의 다른 글
[SWIFT] Optional (0) | 2021.07.05 |
---|---|
[SWIFT] Dictionary (0) | 2021.07.05 |
[SWIFT] 문자열 보간법과 트리플 쿼우팅 (0) | 2021.06.30 |
[SWIFT] 기본 자료형[2] (0) | 2021.06.29 |
[SWIFT] 기본 자료형 및 숫자 타입 (0) | 2021.06.29 |
Comments