티스토리 뷰

반응형

 

 

 


Set

Set은 중복되지 않은 고유 값으로 모여있는 정렬되지 않은 컬렉션(Collection) 집합입니다. 또한 Set에 들어가는 값들은 Hashable 프로토콜을 준수해야합니다.

 

 


Declaration 
선언 

@frozen struct Set<Element> where Element : Hashable

Set 컬렉션(Collection)의 타입 선언부는 위와 같습니다. Set은 struct로 되어있어 구조체의 특성을 갖습니다. 또한 앞서 말했듯이, 또한 Set이 갖는 컬렉션 값들 하나하나는 Hashable 프로토콜을 준수해야(where Element : Hashable) Set에 포함될 수 있습니다. 

또한, Set은 swift 표준 라이브러리에 속해있습니다.

 


Overview
개요

Set 컬렉션(Collection)은 배열(Array) 과 달리, 컬렉션 내의 요소 순서를 신경 쓸 필요가 없고, 해당 요소 하나하나가 중복값이 들어가있지 않는 것을 보장하고 싶을때 사용합니다. 즉, 정렬되지 않은 중복되지않은 값들의 컬렉션을 의도할때 Set을 사용할 수 있겠습니다. 

let set: Set = ["one", "two", "three", "four", "five", "five"]
print(set) // ["one", "two", "three", "four", "five"]

위의 예시를 보면, Set에 "five" 문자열이 두번 들어가더라도 중복값을 허용하지 않는 Set 컬렉션 내에서는 하나만 존재하게 됩니다. 그러므로, "five"문자열이 두번 들어간 set: Set 컬렉션 내 요소를 출력하면, "five"가 한번만 출력됩니다. 

셋의 요소 타입(Element Type)은 어떠한 타입이던 Hashable 프로토콜을 준수한다면 사용할 수가 있습니다. 보통 기본적으로, 문자열(String), 숫자, 부울(Bool)타입, 관련 값이 없는 열거 케이스, 심지어 Set 자기자신까지도 Set의 요소(Element)로서 사용될 수 있습니다. 

 

 


Allocating Value in Set Collection
Set 값 할당하기

Swift는 새로운 배열로서 새로운 Set을 쉽게 만들 수 있도록 지원합니다.
간단하게 배열값을 Set 타입의 변수, 상수에 할당해주면 됩니다. 그 예시는 아래와 같습니다. 

let set: Set = ["one", "two", "three", "four", "five", "five"]
print(set) // ["one", "two", "three", "four", "five"]

if set.contains("three") {
    print("Yes, there is a three string ^-^//")
}

// prints "Yes, there is a three string ^-^//"

Set은 중복값을 허용하지 않습니다. 그러므로 Set Elements를 출력한 결과, 중복되지않은 고유의 값만 출력됩니다.


위의 예시를 보면, Set의 요소를 배열 형태로 할당해주고 있습니다.


Set은 중복값을 허용하지 않으므로, "five" 값은 2번 할당되었지만 실제로는 1개의 값만 들어갑니다. 이러한 중복값을 허용하지 않는 특성은 Dictionary와 유사하다고 볼 수 있습니다.

또한 Set 요소 내에 어떤 특정 요소가 존재하는지 확인하기 위해 Set에서 제공하는 contains  메서드를 활용하고 있습니다.

위의 예시는 "three" 라는 문자열 요소가 Set 타입 변수에 존재하는지를 contains 메서드를 활용해 체크하는 모습입니다. 현재 Set 컬렉션 배열 내에는 "three"가 존재하므로, "Yes, there is a three string ^-^//"가 출력됩니다. 

 


 

애플 Swift 공식 문서 [Set] 참고 링크 ▼

 

Set - Swift Standard Library | Apple Developer Documentation

Call body(p), where p is a pointer to the collection’s contiguous storage. If no such storage exists, it is first created. If the collection does not support an internal representation in a form of contiguous storage, body is not called and nil is return

developer.apple.com

 

 

반응형
댓글
반응형
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
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
글 보관함