ํฐ์คํ ๋ฆฌ ๋ทฐ
Set(์งํฉ)
์ค๋์ ์ ๋ฒ ์๊ฐ์ ์ด์ด Set(์งํฉ)์ ๋ํด ํ๋ฒ ์์๋ณผ๊ฒ์!
์งํฉ์ด๋ผ...
์งํฉ๋ง์ด ๋ค์ด๋ณด์
จ์ฃ ? ํ๊ต๋ค๋ ๋ ์ํ ์์
์์ ๋ฐฐ์ด ์งํฉ์ด์!
์๋ฅผ ๋ค๋ฉด ์งํฉ์ด ์๋๋ฐ, ์ฐจ์งํฉ ๊ตฌํ๊ณ , ๊ต์งํฉ ๊ตฌํ๊ณ .. ์ด๋ฐ๊ฒ๋ค!
swift์์๋ ์งํฉ์ ํตํด ์ฐจ์งํฉ, ๊ต์งํฉ ๋ฑ๋ฑ์ ๊ตฌํํ ์ ์์ต๋๋ค.
๊ทธ๋ผ ์์๋ณผ๊น์?
๋ฐ๋ก ๊ณต์๋ฌธ์๋ฅผ ํตํด ์์๋ณด์ฃ !

An unordered collection of unique elements.
์์๊ฐ ์๊ณ ์ ๋ํฌํ ์์๋ฅผ ๊ฐ์ง๋ค!
์ ๋ํฌํ๋ค๋ฉด.. ์ค๋ณต๋๋ ์์๊ฐ ์๋ ๋ณด๋ค์!
๋ค ๋ง์ต๋๋ค.
์งํฉ์์๋ ์ค๋ณต๋๋ ์์๋ฅผ ํ์ฉํ์ง ์์์.
์ ๋ฒ์ ๋ฐฐ์ ๋ ๋ฐฐ์ด์ด๋์ ๋ค๋ฅด์ฃ ?
๋.. ๋ฌธ์๋ฅผ ๊ณ์ ์ดํด๋ณด๋ฉด
Hashable ์ด๋ผ๋ protocol์ ๋ฐ๋ผ์ผ ํ๋ค๊ณ ๋์ค๋ค์!
์ด๊ฒ์ ๋ํด ์์๋ณด๋ฉด ์์ด ๋ง์์ ์ผ๋จ ๊ณ ์ ํ ๊ฐ(ํด์ฌ ๊ฐ) ์ ๊ฐ์ ธ์ผ ํ๋ค๊ณ ๊ท์น ์ด๋ผ๊ณ ํ๊ณ ๊ฐ๊ฒ์!
์งํฉ์ ์ฌ๋ฌ ํํ๋ก ์ ์ธํด๋ณผ๊ฒ์!
// ๋น ์งํฉ ์์ฑ
var emptySet = Set<String>()
// String์ ์์๋ก ๊ฐ์ง๋ ์งํฉ ์์ฑ
// == stringSet: Set<String> = ["neoguri1", "neoguri2"]
var stringSet: Set = ["neoguri1", "neoguri2"]
๋ฐฐ์ด๊ณผ ๋น์ทํ๊ฒ ์ ์ธ๋๋๊ฒ์ ๋ณผ ์ ์์ฃ ?
ํ์
์ ์ ์ ์ธํด์ค์ผ ํท๊ฐ๋ฆฌ์ง ์์์!
stringSet์ ๋ณด๋ฉด ์ฃผ์์ฒ๋ฆฌ์ ๊ฐ์ ์๋ฏธ์ธ๋ฐ ์งํฉ ํ์
์ ์ ์ธํ๋ฉด์ ์์์ ๋ํ ํ์
์ด ์์ฃ ?
๋ฐ๋ก ์ ์ธํ ๋ ์งํฉ ์์๋ฅผ ๋ณด๊ณ ํ์
์ถ๋ก ์ ์๋์ผ๋ก ํ๊ธฐ ๋๋ฌธ์ด์์!
์งํฉ์ ์ ๋ํฌํ ๊ฐ์ ๊ฐ๋๋ค๊ณ ํ์ฃ ?
ํ์ธํด ๋ณผ๊ฒ์!

"neoguri"์์๋ฅผ 2๊ฐ๋ฅผ ์ฃผ์๋๋ฐ ๊ทธ ๊ฒฐ๊ณผ ๊ฐ์ ๋ณด๋ฉด ์์๊ฐ ์ค๋ณต์ด ๋๊ธฐ ๋๋ฌธ์
1๊ฐ๋ง ์๋๊ฒ์ ๋ณผ ์ ์์ต๋๋ค.
๋ค์์ ์งํฉ์ ์์๋ฅผ ๋ฃ๊ฑฐ๋ ๋นผ๋๋ก ํด๋ณผ๊ฒ์!
์งํฉ์์๋ ์์๋ฅผ ๋ฃ์ ๋ insert(:)
์์๋ฅผ ์ญ์ ํ ๋ remove(:)๋ฅผ ์ฌ์ฉํฉ๋๋ค.

์งํฉ์ ์์๊ฐ ์๊ธฐ ๋๋ฌธ์ ์ฝ์
, ์ถ๋ ฅ ๊ฒฐ๊ณผ๋ ๋ค๋ฅผ ์ ์์ด์!
์งํฉ ๋ด์์ ํน์ ์์๋ฅผ ๊ฐ์ง๊ณ ์๋์ง ํ์ธํ๊ธฐ ์ํ ๋ฉ์๋๋ ์์ด์!
๋ฐ๋ก contains(_:)์ธ๋ฐ์ ์ฌ์ฉ๋ฒ์ ์์๋ณผ๊ฒ์ฉ!

์์๊ฐ ์๋ค๋ฉด true ์๋ค๋ฉด false๋ฅผ ์ถ๋ ฅํ๊ฒ ๋ฉ๋๋ค!
์ฒ์์ ์งํฉ์ ๊ต์งํฉ, ์ฐจ์งํฉ ๋ฑ๋ฑ ์ฐ๋ฆฌ๊ฐ ์ต์ํ
์งํฉ์ ์ฐ์ฐ๋ ๊ฐ๋ฅํ๋ค๊ณ ๋ง์๋๋ ธ์ฃ ?
์๋์ ๊ธฐ๋ณธ ์ฐ์ฐ์ ๋ํ ๋ฉ์๋๋ฅผ ์ฌ์ง์ผ๋ก ์ค๋นํด๋ดค์ด์(feat.swift ๊ณต์๋ฌธ์)
์ดํด๋ณผ๊ฒ์!

- intersection(_:) ๋ ์งํฉ์ ๊ณตํต ๊ฐ์ ๊ฐ์ง๋ ์๋ก์ด ์งํฉ์ ์์ฑ(๊ต์งํฉ)
- symmetricDifference(_:) ๋ ์งํฉ์ ๊ณตํต ๊ฐ์ ์ ์ธํ ์๋ก์ด ์งํฉ์ ์์ฑ
- union(_:) ๋ ์งํฉ์ ๋ชจ๋ ๊ฐ์ผ๋ก ์๋ก์ด ์งํฉ์ ์์ฑ(ํฉ์งํฉ)
- subtracting(_:) ํน์ ์งํฉ์ ๊ณตํต ๊ฐ์ ์ ์ธํ ์๋ก์ด ์งํฉ(์ฐจ์งํฉ)
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(singleDigitPrimeNumbers).sorted()
// [1, 2, 9]
swift ๊ณต์๋ฌธ์์ ์๋ ์์ ๋ฅผ ๊ฐ์ง๊ณ ์๋ดค์ต๋๋ค.
๊ฒฐ๊ณผ๋ฅผ ๋ณด๋ฉด ์์ ์ค๋ช
๋ ๋ฉ์๋ ๊ฒฐ๊ณผ๊ฐ ๋ชจ๋ ๋์ค๋๊ฒ์ ๋ณผ ์ ์์ต๋๋ค!
ํํธ, ์งํฉ๊ด๊ณ์์ ํฌํจ๊ด๊ณ๋ ์๋ก ๋ค๋ฅธ ๊ด๊ณ์ ๋ํด ํ์ธํ๋ ๋ฉ์๋๋ ์๋๋ฐ์
์ฒ์ฒํ ์ดํด๋ณผ๊ฒ์!

a ๋ b ์ ๋ชจ๋ ์์๋ฅผ ํฌํจํ๋ฏ๋ก ์งํฉ a ๋ b ์ ๋ถ๋ชจ์งํฉ (superset), ๋ฐ๋๋ก b ์ ๋ชจ๋ ์์๊ฐ a ์ ํฌํจ๋์ด ์์ผ๋๊น ์งํฉ b ๋ ์งํฉ a ์ ๋ถ๋ถ์งํฉ (subset) ์ด๋ผ ํฉ๋๋ค.
์งํฉ b ์ ์งํฉ c ๋ ๊ณตํต ์์๊ฐ ์์ผ๋ฏ๋ก ๋ถ๋ฆฌ์งํฉ (disjoint) ์ด๋ผ๊ณ ํด์.
์ด๊ฒ์ ๋ํ ๋ฉ์๋๋ฅผ ์ ๋ฆฌํด ๋ดค์ด์
- == : ๋ ์งํฉ์ด ๊ฐ์์ง ํ์ธํ๋ ๋ฉ์๋
- isSubset(of:) : ์งํฉ์ด ํน์ ์งํฉ์ ๋ชจ๋ ๊ฐ์ด ํฌํจ๋์ด ์๋์ง ํ์ธํ๋ ๋ฉ์๋
- isSuperset(of:) : ์งํฉ์ ํน์ ์งํฉ์ ๋ชจ๋ ๊ฐ์ ํฌํจ ํ๋์ง ํ์ธํ๋ ๋ฉ์๋
- isStrictSubset(of:) ๋๋ isStrictSuperset(of:) : ์งํฉ์ด ํน์ ์งํฉ๊ณผ ๊ฐ์ง ์๊ณ ๋ถ๋ถ์งํฉ์ธ์ง ๋ถ๋ชจ์งํฉ์ธ์ง ํ๋จํ์ธํ๋ ๋ฉ์๋
- isDisjoint(with:) ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ฉด ๋ ์งํฉ์ด ๊ณตํต ๊ฐ์ด ์๋์ง ํ์ธํ๋ ๋ฉ์๋
๋ง์ฐฌ๊ฐ์ง๋ก swift๊ณต์๋ฌธ์์์ ์์ ๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค.
let houseAnimals: Set = ["๐ถ", "๐ฑ"]
let farmAnimals: Set = ["๐ฎ", "๐", "๐", "๐ถ", "๐ฑ"]
let cityAnimals: Set = ["๐ฆ", "๐ญ"]
houseAnimals.isSubset(of: farmAnimals)
// true
farmAnimals.isSuperset(of: houseAnimals)
// true
farmAnimals.isDisjoint(with: cityAnimals)
// true
๋ฉ์๋๋ฅผ ์ ์ฉํ๊ณ ๋ฉ์๋๊ฐ ์ํ๋ ๊ฐ์ด ๋ง๋ค๋ฉด
Boolํ์
์ผ๋ก ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ๊ฒ ๋ฉ๋๋ค!
์ฌ๊ฒจ๊น์ง ์งํฉ์ ๋ํด ์์๋ณด์๋๋ฐ์!
์ต์ํ๋ ๋ฉ์๋๋ ์์๊ณ , ์ฒ์๋ณด๋ ๋ฉ์๋๋ ์์๋ค์!
๋ค์์๋ dictionary์ฃผ์ ๋ก ๋์์ฌ๊ฒ์!
๊ฐ์ฌํฉ๋๋ค!
'iOS > Swift' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [iOS/Swift] Closure(ํด๋ก์ ) ์์๋ณด๊ธฐ (0) | 2022.05.27 |
|---|---|
| [iOS/Swift] Switch case ๋ฌธ ์์๋ณด๊ธฐ! (0) | 2022.05.26 |
| [iOS/Swift] Collection Type - Dictionary(๋์ ๋๋ฆฌ) (0) | 2022.05.25 |
| [iOS/Swift] Collection Type - Array (0) | 2022.05.23 |
| [iOS/Swift] iOS/Swfit ๊ณต๋ถ๋ ์ด๋ป๊ฒ ํ ๊น? (0) | 2022.05.21 |
- Total
- Today
- Yesterday
- ์คํ ๋ ์ด์์
- ํ ์คํธ
- set
- Unit Test
- Protocol
- network
- ํ๋กํผํฐ
- xcode
- XCTest
- observable
- swift ๊ณต๋ถ
- RxSwift
- Swift Network
- test
- ์ค์ํํธ ๊ณต๋ถ
- ์ค์ํํธ
- swift
- URLSession
- func
- swift urlsession
- swift ํ๋กํ ์ฝ
- ์ค์ํํธ map
- ํ๋กํ ์ฝ
- RX
- ์ค์ํํธ ํ๋กํ ์ฝ
- autolayout
- Property
- Clean
- ios
- ๊ณต๋ถ
| ์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
|---|---|---|---|---|---|---|
| 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 |