728x90
곡λΆν λ΄μ©μ μ 리ν κΈμ λλ€.
λ°μ΄ν° νμ κ³ κΈ(2) - 컬λ μ ν
- 컬λ μ νμ
- λ°°μ΄
- λμ λ리
- μΈνΈ
1. 컬λ μ νμ Collection Types
SWIFTμμ 컬λ μ νμ (Collection Type)μ λ°μ΄ν° λ¬Άμμ μλ―Ένλ€. SWIFTμμλ 3κ°μ§μ 컬λ μ νμ μ μ 곡νλ€. μ΄ μΈ κ°μ§ 컬λ μ νμ λͺ¨λ generic collectionsλ₯Ό ꡬννκΈ° λλ¬Έμ νλμ μ§μ λ νμ μ λ°μ΄ν°λ₯Ό λ΄μ μ μλ€.
- μ’ λ₯λ‘λ λ°°μ΄, λμ λ리, μΈνΈ λ±μ΄ μλ€.
- let ν€μλλ₯Ό μ¬μ©ν΄ μμλ‘ μ μΈνλ©΄ λ³κ²½ν μ μλ 컬λ μ νμ μ΄ λλ€.
- var ν€μλλ₯Ό μ¬μ©ν΄ λ³μλ‘ μ μΈνλ©΄ λ³κ²½ν μ μλ 컬λ μ νμ μ΄ λλ€.
μ λ€λ¦ Generic
μ λ€λ¦ μ½λλ‘ κ΅¬νλ κ²λ€μ μ΄λ€ νμ μ΄λ λ΄μ μ μκ² μ§μ ν μ μμμ μλ―Ένλ€.
μ€μννΈμ κ°μ₯ ν° νΉμ§ μ€ νλμ΄λ€. κ²λ€κ° μλΉν μμ μ€μννΈ νμ€ λΌμ΄λΈλ¬λ¦¬λ μ λ€λ¦ μ½λλ‘ κ΅¬νλμ΄ μλ€.
μλ₯Ό λ€μ΄ 컬λ μ νμ μ€ νλμΈ arrayλ Int, String λ± μ΄λ€ νμ μ΄λ μ§ λ΄μ μ μλ€.
2. λ°°μ΄ Array
- κ°μ νμ μ λ°μ΄ν°λ₯Ό μΌλ ¬λ‘ λμ΄ν ν μμλλ‘ μ μ₯νλ ννμ 컬λ μ νμ μ΄λ€.
- CμΈμ΄ λ± λ€λ₯Έ μΈμ΄λ€κ³Ό λ€λ₯΄κ² λ°°μ΄μμλ var ν€μλλ₯Ό μ¬μ©νλ©΄ μμμ μ½μ μμ κ° μμ λ‘λ€.
λ°°μ΄ μ μΈ λ° μ κ·Ό λ°©λ²
//λ³κ²½ λΆκ°λ₯ν λ°°μ΄ μ μΈ
let immutableArray: Array<String> = Array<String>()
//λ³κ²½ κ°λ₯ν λ°°μ΄ μ μΈ
var mutableArray: Array<String> = Array<String>()
//λ€μν λ°°μ΄ μ μΈ λ° μ΄κΈ°ν λ°©λ²
var array1: Array<Int> = Array<Int>()
var array2: [Int] = Array<Int>()
var array3: [Int] = [Int]()
var array4: [Int] = []
var array5: [Int] = [1, 2, 3]
//νμ
μΆλ‘ κΈ°λ₯μ΄ μκΈ° λλ¬Έμ νμ
μ μλ΅ν μλ μλ€.
//λ°°μ΄ μ κ·Ό
print(array5[0])
print(array5[0 ... 3])
array[2] = 5
array[1 ... 2] = [4, 8]
λ°°μ΄μ λ©μλ λ° νλ‘νΌν°
νλ‘νΌν° λλ λ©μλλͺ |
μ€λͺ | μμ |
.isEmpty | λΉ μ¬λΆ νμΈ κ°λ₯. Bool ννλ‘ λ°ν | print(emptyArray.isEmpty) //true λλ false λ°ν |
.count | λ°°μ΄μ μμ κ°μ νμΈ κ°λ₯ | print(hasThrArray.count). //3λ°ν |
.first | λ°°μ΄μ 맨 μ²μ μμλ₯Ό λ°ν | |
.last | λ°°μ΄μ 맨 λ§μ§λ§ μμλ₯Ό λ°ν | |
append(_: ) | λ°°μ΄μ 맨 λ€μ μμλ₯Ό μΆκ°νλ€. | testArray.append(1) testArray.append(contentsOf: [2, 3]) testArray.append(contentsOf: 4...10) //4λΆν° 10κΉμ§ μΆκ°λλ€. |
insert(_: at:) | μνλ μμΉμ μμλ₯Ό μΆκ°νλ€. ν΄λΉ μμΉμ μλ μμλ λ€λ‘ λ°λ €λλ€. |
var test: [Int] = [1, 2] test.insert(10, at: 1) //[1, 10, 2] test.insert(contentsOf: [11, 12] at: 2) //[1, 10, 11, 12, 2] test.insert(contensOf: 100...102 at: 4) //[1, 10, 11, 12, 100, 101, 102, 2] |
firstIndex(of:) | ν΄λΉ μΈμμ μΌμΉνλ μμ μ€ μ²« λ²μ§Έ μμμ μΈλ±μ€ λ°ν | var test: [String] = ["kim", "yoon", "kim", "lee"] print(test.firstIndex("kim")) //μΈλ±μ€ 0 λ°ν print(test.lastIndex("kim")) //μΈλ±μ€ 2 λ°ν |
lastIndex(of:) | ν΄λΉ μΈμμ μΌμΉνλ μμ μ€ λ§μ§λ§ μμμ μΈλ±μ€ λ°ν | |
removeFirst([k:]) | 첫 λ²μ§Έ μμ μμ ν λ°ν k: -> μμμ kκ°μ μμ μμ ν λ°ν |
let firstItem:String = names2.removeFirst() //첫 λ²μ§Έ μμλ₯Ό μμ ν λ°ν let lastItem:String = names2.removeLast() //λ§μ§λ§ μμλ₯Ό μμ ν λ°ν let indexZeroItem:String = names2.remove(at: 0)// ν΄λΉ μΈλ±μ€ μμ μμ ν λ°ν print(firstItem, lastItem, indexZeroItem) |
removeLast([k:]) | λ§μ§λ§ μμ μμ ν λ°ν k: -> λ€μμ kκ°μ μμ μμ ν λ°ν |
|
remove(at:) | ν΄λΉνλ μΈλ±μ€μ μμλ₯Ό μμ ν λ°ν |
3. λμ λ리 Dictionary
- μμ μμ΄ ν€μ κ°μ μμΌλ‘ ꡬμ±λλ 컬λ μ νμ
- ν€λ μ μΌν κ°μ΄μ΄μΌ νλ€.
- λ°°μ΄κ³Ό λ€λ₯΄κ² λμ λ리 λ΄λΆμ μλ ν€λ‘ μ κ·Όν΄λ μ€λ₯κ° λ°μνμ§ μλλ€. nil λ°ν. default κ°μ μ€μ ν μλ μλ€.
λμ λ리μ μ μΈκ³Ό μ κ·Ό λ°©λ²
//λ³κ²½κ°λ₯ν λμ
λ리 μ μΈ
var mutableDictionary1: [Sting: Int] = [:]
//λ³κ²½ λΆκ°λ₯ν λμ
λ리 μ μΈ
let mutableDictionary2: [Sting: Int] = [:]
//λμ
λ리μ μ μΈ λ°©λ² (keyκ° String νμ
μ΄κ³ valueκ° IntμΌ λ)
var dictionary1: Dictionary<String, Int> = Dictionary<String>()
var dictionary2: [String: Int] = [String: Int]() //:μ£Όμ
var dictionary3: [String: Int] = [:]
var dictionary4: [String: Int] = ["test1": 1, "test2":2]
//νμ
μΆλ‘ κΈ°λ₯μ΄ μκΈ° λλ¬Έμ νμ
μ μλ΅ν μλ μλ€.
//νμ
λ³μΉμΌλ‘ λ λ¨μνκ² ννν μλ μλ€.
typealias StringIntDictionary = [String: Int]
var dictionary5: StringIntDictionary = StringIntDictionary()
//λμ
λ리 μμ μ κ·Ό λ°©λ²
print(dictionary4["test1"]) //1 μΆλ ₯
print(dictionary4["88yhtserof"]) //nil μΆλ ₯
print(dictionary4["88yhtserof", default: 0]) //nil λμ 0 μΆλ ₯
λμ λ리μ λ©μλ λ° νλ‘νΌν°
νλ‘νΌν° λλ λ©μλλͺ |
μ€λͺ | μμ |
.isEmpty | λμ λλ¦¬κ° λΉμ΄μλμ§ Bool νμ μΌλ‘ λ°ν | print(emptyDictionary.isEmpty) //true |
.count | λμ λ리 μμμ κ°μ λ°ν | print(hasThrDictionary.count). //3λ°ν |
removeValue(forkey:) | ν€μ ν΄λΉνλ κ°μ μ κ±° ν λ°ννλ€. λ³μ λλ μμμ ν λΉν κ²½μ° nil κ°μ΄ λ°νλ μ μμμ μΈμνμ¬ ? ν€μλλ₯Ό μ¬μ©ν΄μΌ νλ€. |
var returnValue: Int? = test.removeValue(forKey: "kim") print(test.removeValue(forKey: "88yhtserof") ) //κ°μ΄ λ°νλ κ²½μ° ifλ¬Έ ν΅κ³Ό, nillμ΄ λ°νλ κ²½μ° else λ¬Έ μ€ν if let returnValue = test.removeValue(forKey: "lee"){ print("remove") } else{ print("No found") } |
updateValue(_: forKey:) | ν΄λΉ ν€μ ν λΉλ κ°μ λ³κ²½νλ λ©μλ | test.updateValue(888, forKey: "test") |
4. μΈνΈ Set
- κ°μ νμ μ λ°μ΄ν°λ₯Ό μμ μμ΄ νλμ λ¬ΆμμΌλ‘ μ μ₯νλ ννμ 컬λ μ νμ
- μΈνΈ λ΄μ κ°μ λͺ¨λ μ μΌν κ°
- λ°λΌμ μμκ° μ€μνμ§ μκ±°λ κ° μμκ° μ μΌν κ°μ΄μ΄μΌ ν λ μ£Όλ‘ μ¬μ©νλ€.
- λ°°μ΄κ³Ό λ€λ₯΄κ² μμ± μ μΆμνμ μ¬μ©ν μ μλ€.
- νμ μΆλ‘ κΈ°λ₯μ μ¬μ©ν μ μλ€.
- μΈνΈλ μμ λ΄μ£Όμ κ°λ€μ΄ λͺ¨λ μ μΌν¨μ 보μ₯νλ―λ‘ μ§ν© κ΄κ³λ₯Ό νννκ³ μ ν λ μ μ©νκ² μ°μΈλ€.
- κ΅μ§ν©, ν©μ§ν© λ± μ°μ°μ μ©μ΄
μΈνΈμ μ μΈ λ° μ΄κΈ°ν
//λ³κ²½ λΆκ°λ₯ν μΈνΈ μ μΈ
let immutableSet: Set<String> = Set<String>()
//λ³κ²½ κ°λ₯ν μΈνΈ μ μΈ
var mutableSet: Set<String> = Set<String>()
//μΈνΈ μ μΈ λ° μ΄κΈ°ν λ°©λ²
var set1: Set<String> = Set<String>()
var set2: Set<String> = []
var set3: Set<Int> = [1, 2, 3]
//μΈνΈλ μΆμ½νμ μ¬μ©ν μ μλ€
μΈνΈμ λ©μλ λ° νλ‘νΌν°
νλ‘νΌν° λλ λ©μλλͺ |
μ€λͺ | μμ |
.isEmpty | μΈνΈκ° λΉμ΄μλμ§ Bool νμ μΌλ‘ λ°ν | print(testSet.isEmpty) |
.count | μΈνΈ μμμ κ°μλ₯Ό λ°ννλ€. | print(testSet.count) |
insert(_:) | μΈνΈμ μ£Όμ΄μ§ κ°μ μμλ‘ μΆκ°νλ€. | testSet3.insert("A") |
remove(_:) | ν΄λΉνλ μμλ₯Ό μμ ν λ°ννλ€. ν΄λΉνλ μμκ° μλ€λ©΄ nilμ λ°ννλ€. λ³μ λλ μμμ remove()λ‘ λ°νλλ κ°μ ν λΉνλ €λ©΄ nilμ΄ λ°νλ μ μμμ μΈμνκ³ ? ν€μλλ₯Ό μ¬μ©ν΄μΌ νλ€. |
print(testSet.remove("kim")) let removeTest: String? = testSet.remove("sandra") if let test = testSet.remove("lee") { print("Success") } else{ //nilμ΄ λ°νλ κ²½μ° print("Fail") } |
sorted() | μ λ ¬λ λ°°μ΄μ λ°ννλ€. | print(test.sorted()) //[1, 2, 3, 4] |
intersection(_:) | κ΅μ§ν© λ κ°μ μΈνΈμ 곡ν΅λ λΆλΆλ§μΌλ‘ μ μΈνΈλ₯Ό μμ±ν λ μ¬μ© |
|
symmetricDifference(_:) | λ μ§ν©μ μλ μ¬μ§ν©μ ν©(λ°°νμ λ
Όλ¦¬ν©) -λ κ°μ μΈνΈ κ΅μ§ν©μ μ¬μ§ν© κ΅μ§ν©μ΄ μλ μμͺ½ μΈνΈμ κ°μΌλ‘ μ μΈνΈλ₯Ό μμ±ν λ μ¬μ© |
|
union(_:) | ν©μ§ν© λ μΈνΈ λͺ¨λμ κ°μΌλ‘ μ μΈνΈλ₯Ό μμ±ν λ μ¬μ© |
|
subtracting(_:) | μ°¨μ§ν© | a = [1, 2, 3] b = [2, 3] a.subtracting(b) //a-b = [1] |
isDisjoint(with:) | μλ‘ λ°°νμ μΈκ° λ μΈνΈκ° 곡ν΅λλ κ°μ΄ μλμ§ μλμ§ Boolννλ‘ λ°ννλ€. 곡ν΅λλ λΆλΆμ΄ μλ€λ©΄ true 곡ν΅λλ λΆλΆμ΄ μλ€λ©΄ false |
|
A.isSupset(of: B) | Aκ° Bμ λΆλΆ μ§ν©μΈκ°? (νμ μ§ν©μΈκ°) | |
A.isSuperset(of: B) | Aκ° Bμ μμ μ§ν©μΈκ°? (μ 체 μ§ν©μΈκ°?) | |
A.isStrictSubset(of:) | Aκ° Bμ λΆλΆ μ§ν©μΈκ°? λ¨, μ 체μ§ν©μ΄λ©΄ μλ¨. | a = [1, 2, 3] b = [2, 3] c = [1, 2, 3] b.isStrictSubset(of: a) //true a.isStrictSubset(of: c) //false a.isStrictSubset(of: a) //false |
μ§ν©μ°μ°κ³Ό ν¬ν¨κ΄κ³ μ°μ° μ¬μ©
//μ§ν© μ°μ°
let classAStudents: Set<String> = ["88yhtserof", "kim", "lee"]
let classBStudents: Set<String> = ["ari", "lee", "kim", "renee"]
//κ΅μ§ν©
let intersectSet: Set<String>
= classAStudents.intersection(classBStudents)
print(intersectSet)
//μ¬μ§ν©μ ν©(λ°°νμ λ
Όλ¦¬ν©) - κ΅μ§ν©μ μ¬μ§ν©
let symmetricDiffSet: Set<String>
= classAStudents.symmetricDifference(classBStudents)
print(symmetricDiffSet)
//ν©μ§ν©
let unionSet: Set<String> = classAStudents.union(classBStudents)
print(unionSet)
//μ°¨μ§ν©
let subtractSet: Set<String> = classAStudents.subtracting(classBStudents)
print(subtractSet) //john
print(unionSet.sorted()) //sorted λ©μλλ₯Ό ν΅νμ¬ μ λ ¬λ λ°°μ΄μ λ°ν
//ν¬ν¨κ΄κ³ μ°μ°
let bird: Set<String> = ["λ‘", "λ", "κ°λ§€κΈ°"]
let mammal: Set<String> = ["κ°", "λ°λ¬κ°μ΄κ³°", "ν λΌ"]
let animal: Set<String> = bird.union(mammal) //ν©μ§ν©
print(bird.isDisjoint(with: mammal)) //μλ‘ λ°°νμ μΈκ°μ? true
print(bird.isSubset(of: animal)) // μκ° λλ¬Όμ λΆλΆμ§ν©μΈκ°μ? true
print(animal.isSuperset(of: mammal)) //λλ¬Όμ ν¬μ λ₯μ μ 체μ§ν©μΈκ°μ? true
print(animal.isSuperset(of: bird)) //λλ¬Όμ μμ μ 체μ§ν©μΈκ°μ? true
print(animal.isStrictSubset(of: bird)) //false
print(animal == bird) //false
μΌκ³° - μ€μννΈ νλ‘κ·Έλλ° 5ν (SWIFT5)
docs.swift.org
https://docs.swift.org/swift-book/LanguageGuide/CollectionTypes.html
728x90
'Swift' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[ SWIFT ] μ°μ°μ - μ°μ μ°μ°μ, λΉκ΅ μ°μ°μ, μΌν 쑰건 μ°μ°μ, λ²μ μ°μ°μ, nil λ³ν© μ°μ°μ, λΆνΈ λ³κ²½ μ°μ°μ (0) | 2021.08.13 |
---|---|
[ SWIFT ] λ°μ΄ν° νμ κ³ κΈ(3) - μ΄κ±°ν (0) | 2021.07.30 |
[ SWIFT ] λ°μ΄ν° νμ κ³ κΈ (1) (0) | 2021.07.19 |
[ SWIFIT ] λ°μ΄ν° νμ κΈ°λ³Έ (0) | 2021.07.11 |
[ SWIFT ] μ€μννΈ μ²μ μμνκΈ° (0) | 2021.07.08 |