티스토리 뷰
오늘은 Swift의 Set(집합)에 대해서 알아볼게요.
Set은 배열과 비슷하지만, Dictionary와 마찬가지로 순서를 보장하지 않습니다. 또한 C++이나 Java같은 언어들처럼 중복값을 허용하지 않습니다. 집합이니까 순서는 중요하지않고, 중복값이 없는건 당연하겠죠?
또한, Dictionary와 마찬가지로 해쉬가능한(Hashable)타입만을 담을 수 있습니다.(Swift의 기본 데이터타입은 가능합니다.) (하지만, 커스텀할경우 자신만의 타입을 넣을 수 있는 것 같아요)
Set사용법을 차근차근 알아봅시다.
Set
1. Set 생성
var emptySet = Set<String>()
var emptySet2 : Set<String> = []
2. Set 생성과 동시에 초기화
var emptySet1 : Set<String> = ["hello","world","zedd"]
var emptySet2 : Set = ["hello","world","zedd"]
※주의
Set이라고 명시를 해주지 않으면 배열로 인식됩니다.
var emptySet2 : Set = ["hello","world","zedd"]//Set
var emptySet = ["hello","world","zedd"]//Array(배열)
3. Set에 값 추가
var emptySet1 : Set = ["hello","world","zedd"]
emptySet1.insert("iOS")
print(emptySet1)//["hello","world","zedd","iOS"]
emptySet1.insert("hello")
print(emptySet1)//["hello","world","zedd","iOS]
//Set은 중복된 값을 허용하지 않기때문에 hello를 넣어도 이미 hello가 있기 때문에 변화가 없다.
emptySet1.update(with: "swift")
print(emptySet1)//["hello","world","zedd","iOS", "swift"]
//다시한번 말씀드리지만, 출력 저렇게 순서대로 안나옵니다..그냥 메소드를 어떻게 쓰는지에만 집중해주세요 :)
4. Set 값 제거
var emptySet1 : Set = ["hello","world","zedd","swift","iOS"]
emptySet1.remove("swift")//Set에서 swift를 찾아서 제거
print(emptySet1)//["hello","world","zedd","iOS"]
emptySet1.remove(at: emptySet1.index(of: "iOS")!)//remove(at:)안에는 index가 들어가야합니다. emptySet의 iOS를 가지는 index를 제거.
print(emptySet1)//["hello","world","zedd"]
emptySet1.removeAll()
print(emptySet1)//[]
emptySet1.insert(1)//error!
타입이 맞지 않아 생기는 오류입니다. 타입은 한번 결정되면 바꿀 수 없는 것. 아시죠? 원래 emptySet은 String만 담을 수 있는 Set이었기 때문에 Int를 담을 수 없습니다.
5. for문
for index in emptySet1{
print(index) //hello world zedd
}
//배열과 for문 도는법 완전히 똑같습니다 :)
6. set의 특별한 메소드 써보기
Set이 곧 집합이죠? 집합의 연산들을 할 수 있습니다.
같이 해볼까요? 먼저, 연산을 할 Set 두개를 만들어주고, 해보겠습니다.
var a :Set = ["hello","world","zedd"]
var b :Set = ["swift","iOS","zedd"]
print(a.intersection(b))//교집합 : ["zedd"]
print(a.symmetricDifference(b))//합집합-교집합 : ["hello", "world","swift","iOS"]
print(a.union(b))//합집합 : ["hello", "world","swift","iOS","zedd"]
print(a.subtracting(b))//여집합 : ["hello", "world"] 주의 : substract아닙니다. 메소드이름에 주의하세요 :)
print(b.subtracting(a))//여집합 : ["swift", "iOS"]
어때요? 신기하죠 ㅎㅎ
간단하게 Set사용법을 알아봤는데..도움이 되었으면 좋겠네요 :)
'Swift' 카테고리의 다른 글
Swift3 ) 왕초보를 위한 날짜와 시간(Date)사용해보기 (1/2) (0) | 2017.07.14 |
---|---|
Swift3 ) How to convert Array/Dictionary/Set to String in Swift(배열/집합/사전을 문자열로 바꾸는 방법) (0) | 2017.07.13 |
Swift3 ) Collection - Dictionary사용해보기 (5) | 2017.07.12 |
Swift3 ) How to convert string to an array in Swift ( 문자열을 배열로 바꾸는 방법) (2) | 2017.07.10 |
Swift3 ) Array사용해보기 (2/2) (1) | 2017.07.02 |
- ios 13
- IOS
- Xcode
- 스위프트 문법
- Swift
- WWDC
- swift 공부
- Combine
- FLUTTER
- swift tutorial
- github
- iOS delegate
- fastlane
- swift array
- 제이슨 파싱
- 피아노
- actor
- np-hard
- swift delegate
- swift3
- WidgetKit
- UIBezierPath
- Accessibility
- 회고
- Git
- swift sort
- WKWebView
- 스위프트
- np-complete
- SwiftUI
- Total
- Today
- Yesterday