๋ฐฐ์ด, ์ธํธ, ๋์ ๋๋ฆฌ
๋ฐฐ์ด (Array)
- ๋์ผํ ํ์ ์ ์์๋ค์ ์ ์ฅํ๋ ์์๊ฐ ์๋ ์ปฌ๋ ์
- ๋ฐฐ์ด์ ํน์ ์์์ ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ์ฌ ์ ๊ทผํ๊ณ ์์ ํ ์ ์์ผ๋ฉฐ, ๋ฐฐ์ด์ ํฌ๊ธฐ๋ ๋์ ์ผ๋ก ์กฐ์ ๋๋ค.
- ์ธ๋ฑ์ค(index)๋ 0 ๋ถํฐ ์์ํ๋ค.
- ์ฒ์์ ์ ์ธํ ๋(์ด๊ธฐํํ ๋) ๋ฐฐ์ด์ ๊ธธ์ด๋ฅผ ๋ฏธ๋ฆฌ ์ง์ ํ์ง ์์๋ ๋๋ค.
๋ฐฐ์ด ์์ฑํ๊ธฐ
// ๋ฐฐ์ด ์์ฑํ๊ธฐ
// 1. ํ์
์ถ๋ก ์ผ๋ก ์์ฑํ๊ธฐ
var array1 = [1, 2, 3]
var array2 = [] // error! ํ์
์ถ๋ก ์ผ๋ก ๋น ๋ฐฐ์ด ์์ฑ ๋ถ๊ฐ
// 2. ํ์
Annotation์ผ๋ก ์์ฑํ๊ธฐ
var array3: [Int] = [1, 2, 3]
var array4: [Int] = [] //๋น ๋ฐฐ์ด ์์ฑ
// 3. ์์ฑ์๋ก ์์ฑํ๊ธฐ
var array5 = Array<Int>()
var array6 = [Int]()
var array7 = [Int](repeating: 0, count: 10) //์์ฑ๊ณผ ๋์์ 10๊ฐ Element ์์ฑ ๋ฐ 0์ผ๋ก ์ด๊ธฐํ
๋ฐฐ์ด ๊ฐฏ์ ํ์ธํ๊ธฐ
// ๋ฐฐ์ด ๊ฐฏ์ ํ์ธํ๊ธฐ
var array1 = [1, 2, 3]
let count: Int = array1.count // ๋ฐฐ์ด ๊ฐฏ์ ํ์ธ : 3
let isEmpty: Bool = array1.isEmpty // ๋ฐฐ์ด ๋น์๋์ง ํ์ธ : false
๋ฐฐ์ด ์์์ ์ ๊ทผํ๊ธฐ
// ๋ฐฐ์ด ์์์ ์ ๊ทผํ๊ธฐ
var array1 = [1, 2, 3]
// 1. Subscript๋ก ์ ๊ทผํ๊ธฐ
array1[0] // 1
array1[1] // 2
// 2. ๋ฒ์๋ก ์ ๊ทผํ๊ธฐ
array1[0...1] // [1, 2]
// 3. ์์ฑ์ผ๋ก ์ ๊ทผํ๊ธฐ
array1.first // Optional(1)
array1.last // Optional(3)
๋ฐฐ์ด ์์ ์ถ๊ฐํ๊ธฐ
// ๋ฐฐ์ด์ ์์ ์ถ๊ฐํ๊ธฐ
// 1. append : ๋์ ์ถ๊ฐ
var array1 = [1, 2, 3]
array1.append(4) // [1, 2, 3, 4]
array1.append(contentsOf: [5, 6, 7]) // contentsOf๋ก ์ฌ๋ฌ๊ฐ ์ถ๊ฐ ๊ฐ๋ฅ [1, 2, 3, 4, 5, 6, 7]
// 2. insert : ์ค๊ฐ์ ์ถ๊ฐ
var array2 = [1, 2, 3]
array2.insert(0, at: 0) // at์ ์์น [0, 1, 2, 3]
array2.insert(contentsOf: [10, 100], at: 2) // [0, 1, 10, 100, 2, 3 ]
๋ฐฐ์ด ์์ ๋ณ๊ฒฝํ๊ธฐ
// ๋ฐฐ์ด์ ์์ ๋ณ๊ฒฝํ๊ธฐ
// 1. Subscript๋ก ๋ณ๊ฒฝํ๊ธฐ
var array1 = [1, 2, 3]
array1[0] = 10 // [10, 2, 3]
array1[0...2] = [10, 20, 30] // [10, 20, 30]
array1[0...2] = [0] // [0]
array1[0..<1] = [] // []
// 2. replaceSubrange๋ก ๋ฐ๊พธ๊ธฐ (๋ฒ์ ๋ณ๊ฒฝ ์)
var array2 = [1, 2, 3]
array2.replaceSubrange(0...2, with: [10, 20, 30]) // [10, 20, 30]
array2.replaceSubrange(0...2, with: [0]) // [0]
array2.replaceSubrange(0..<1, with: []) // []
๋ฐฐ์ด ์์ ์ญ์ ํ๊ธฐ
// ๋ฐฐ์ด์ ์์ ์ญ์
// 1. ์ผ๋ฐ์ ์ธ ์ญ์ ํ๊ธฐ
var array1 = [1, 2, 3, 4, 5, 6, 7, 8, 9]
array1.remove(at: 2) // [1, 2, 4, 5, 6, 7, 8, 9]
array1.removeFirst() // [2, 4, 5, 6, 7, 8, 9]
array1.removeFirst(2) // ์์ ๋ช๊ฐ๋ฅผ ์ ๊ฑฐํ ๊ฑด์ง [5, 6, 7, 8, 9]
array1.removeLast() // [5, 6, 7, 8]
array1.popLast() // [5, 6, 7]
array1.removeLast(2) // [5]
array1.removeAll() // []
// 2. ํน์ ๋ฒ์ ์ญ์ ํ๊ธฐ
var array2 = [1, 2, 3, 4, 5, 6, 7, 8, 9]
array2.removeSubrange(1...3) // [1, 5, 6, 7, 8, 9]
array2[0..<2] = [] // [6, 7, 8, 9]
๋ฐฐ์ด ๋น๊ตํ๊ธฐ
// ๋ฐฐ์ด ๋น๊ตํ๊ธฐ
var array1 = [1, 2, 3]
var array2 = [1, 2, 3]
var array3 = [1, 2, 3, 4, 5,]
array1 == array2 //true
array1.elementsEqual(array3) //false
๋ฐฐ์ด ์ ๋ ฌํ๊ธฐ
// ๋ฐฐ์ด ์ ๋ ฌํ๊ธฐ
let array1 = [1, 5, 3, 8, 6, 10, 14]
// 1. sort : ๋ฐฐ์ด์ ์ง์ "์ค๋ฆ์ฐจ์"์ผ๋ก ์ ๋ ฌ
array1.sort() // [1, 3, 5, 6, 8, 10, 14]
// 1-1. sort + ํด๋ก์ : ๋ฐฐ์ด์ ์ง์ "๋ด๋ฆผ์ฐจ์"์ผ๋ก ์ ๋ ฌ
array1.sort(by: >) // [14, 10, 8, 6, 5, 3, 1]
// 2. sorted : ์๋ณธ์ ๊ทธ๋๋ก ๋๊ณ , "์ค๋ฆ์ฐจ์"์ผ๋ก ์ ๋ ฌ๋ ์๋ก์ด ๋ฐฐ์ด์ ๋ง๋ค์ด ๋ฆฌํด
let sortedArray = array1.sorted() // [1, 3, 5, 6, 8, 10, 14]
// 2-1. sorted + ํด๋ก์ : ์๋ณธ์ ๊ทธ๋๋ก ๋๊ณ , "๋ด๋ฆผ์ฐจ์"์ผ๋ก ์ ๋ ฌ๋ ์๋ก์ด ๋ฐฐ์ด์ ๋ง๋ค์ด ๋ฆฌํด
let sortedArray2 = array1.sorted(by: >) // [14, 10, 8, 6, 5, 3, 1]
์ธํธ (Set)
- Set๋ ์งํฉ์ด๋ผ๊ณ ์๊ฐํ๋ฉด ๋๋ค.
- Set๋ ์์๋ฅผ ์ ์ํ์ง ์๊ณ ๋์ผํ ํ์ ์ ๊ฐ์ ์ ์ฅ
- ํญ๋ชฉ์ ์์๊ฐ ์ค์ํ์ง ์๊ฑฐ๋ ํญ๋ชฉ์ด ํ ๋ฒ๋ง ํ์๋๋๋ก ํด์ผ ํ๋ ๊ฒฝ์ฐ ๋ฐฐ์ด ๋์ ์งํฉ์ ์ฌ์ฉํ ์ ์๋ค.
- ์ธํธ ์์ ์๋ ๋ชจ๋ ๊ฐ์ ๊ณ ์ (unique)ํด์ผํ๋ฏ๋ก ์ค๋ณต์ ํ์ฉํ์ง ์๋๋ค.
var letters = Set<String>()
// ๊ฐ ๋ฃ๊ธฐ
letters.insert("Classical Music")
// ์ด๊ธฐํ
letters = []
var favoriteGenres: Set<String> = ["Rock", "Classical", "Hip hop"]
favoriteGenres.isEmpty // false
favoriteGenres.count // 3
favoriteGenres.contains("Rock") // true
favoriteGenres.randomElement() // Hip hop (๋ค๋ฅธ element๊ฐ ๋์ฌ ์ ์์)
// ์
๋ฐ์ดํธ(update) - ์ฝ์
, ๊ต์ฒด, ์ถ๊ฐ
// ๋ฐฐ์ด์์ ์ฌ์ฉํ๋ append๊ฐ ์์
var set1: Set<Int> = [1,1,2,2,3,3] // ์ค๋ณต์ ํ์ฉํ์ง ์์
set1.update(with: 1) // 1 -> ๊ธฐ์กด์ ์๋ ์์์ด๋ฏ๋ก ๊ฐ์ ์ต์
๋ ํ์
์ผ๋ก ๋ฆฌํด
set1.update(with: 7) // nil -> ๊ธฐ์กด์ ์๋ ์์์ด๋ฏ๋ก Set์ ์์๊ฐ ์ถ๊ฐ๋๊ณ nil ๋ฆฌํด
set1.remove(1) // 1 -> ์ญ์ ๋ ์์๋ฅผ ๋ฆฌํด
set1 // [2,3,7]
set1.remove(5) // nil -> ์กด์ฌํ์ง ์๋ ์์๋ฅผ ์ญ์ ํ์ ๋ ์๋ฌ๋ ๋ฐ์ํ์ง ์๊ณ nil ๋ฆฌํด
// ์ ์ฒด์์ ์ญ์
set1.removeAll()
set1.removeAll(keepingCapacity: true) // ์์๋ ์ ๊ฑฐํ์ง๋ง ๋ฉ๋ชจ๋ฆฌ๋ ์ ๊ฑฐํ์ง ์๋๋ค
๋์ ๋๋ฆฌ (Dictionary)
- Dictionary๋ ์ฌ์ ์ด๋ผ๊ณ ์๊ฐํ๋ฉด ๋๋ค.
- Dictionary๋ ์์๋ฅผ ์ ์ํ์ง ์๊ณ ๊ฐ์ ํ์
์ key์ ๊ฐ์ ํ์
์ value๋ฅผ ์ ์ฅ
- key๋ ์ค๋ณต๋ ์ ์๋ค.
- ๋ชจ๋ key๋ ๊ฐ์ ํ์ ์ด์ด์ผ ํ๋ค.
- ๋ชจ๋ value๋ ๊ฐ์ ํ์ ์ด์ด์ผ ํ๋ค.
- key์ value๋ ๋ค๋ฅธ ํ์ ์ด์ด๋ ๋๋ค.
- ์ค๋ฌผ ์ฌ์ ์ ์ฐพ๋ ๊ฒ์ฒ๋ผ ์์๊ฐ ์๋ ์๋ณ์ ๊ธฐ์ค์ผ๋ก ๊ฐ์ ์ฐพ์ ๋ Dictionary๋ฅผ ์ฌ์ฉํ๋ค.
var namesOfIntegers: [Int: String] = [:]
namesOfIntegers[16] = "sixteen" // 16์ subscript๊ฐ ์๋๋ผ "ํค"์
// ์ด๊ธฐํ
namesOfIntegers = [:]
var airports: [String: String] = ["YYZ": "Toronto Pearson", "DUB": "Dublin"]
airports.keys // ["YYZ", "DUB"]
airports.values // ["Toronto Pearson", "Dublin"]
airports.keys.sorted() // ["DUB", "YYZ"]
airports.values.sorted() // ["Dublin", "Toronto Pearson"]
airports["APL"] = "Apple International"
// airports = ["YYZ": "Toronto Pearson", "DUB": "Dublin", "APL": "Apple International"]
// key์ ๋งค์นญ๋ value ๊ฐ ์ด๊ธฐํ
airports["APL"] = nil
// ๋์
๋๋ฆฌ airports์ ์๋ ๊ฐ์ ์
print(airports.count)
// ์ถ๋ ฅ๊ฐ: 2
// ๋์
๋๋ฆฌ airports์ ์๋ ๋ชจ๋ key๋ค
print(airports.keys)
// ["YYZ", "DUB"]
// ํด๋น key๊ฐ ์๋ค๋ฉด value๋ฅผ ๋ฎ์ด์ฐ๊ณ , ๋ฎ์ด์ฐ๊ธฐ ์ ๊ธฐ์กด๊ฐ์ธ ๋ฐํ
let newYyz = airports.updateValue("Hello YYZ", forKey: "YYZ")
print(newYyz) // ์ถ๋ ฅ๊ฐ: Optional("Toronto Pearson")
print(airports["YYZ"]) // ์ถ๋ ฅ๊ฐ: Optional("Hello YYZ")
// ํด๋น key๊ฐ ์๋ค๋ฉด ๊ทธ key์ ํด๋นํ๋ value์ ๊ฐ์ ์ถ๊ฐํ๊ณ nil์ ๋ฐํ
let newApl = airports.updateValue("Hello APL", forKey: "APL")
print(newApl) // ์ถ๋ ฅ๊ฐ: nil
print(airports["APL"]) // ์ถ๋ ฅ๊ฐ: Optional("Hello APL")
'๐ Today I Learned > Swift ๋ฌธ๋ฒ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Swift] ํด๋์ค, ๊ตฌ์กฐ์ฒด, ์ด๊ฑฐํ (0) | 2023.12.07 |
---|---|
[Swift] ๊ฐ์ฒด ์งํฅ (0) | 2023.12.07 |
[Swift] ์คํ, ํ (2) | 2023.12.06 |
[Swift] ์ต์ ๋ (0) | 2023.12.06 |
[Swift] ์กฐ๊ฑด๋ฌธ๊ณผ ๋ฐ๋ณต๋ฌธ (0) | 2023.12.06 |