μ€λͺ
#
- Key-Value μ μ₯νλ 컬λ μ
νμ
- ν΄μ ν
μ΄λΈλ‘ ꡬνλμ΄μμ
- λΉ λ₯Έ μλλ‘ μ κ·Ό, μμ , μΆκ°, ν€ μ‘΄μ¬ μ¬λΆ νμΈ κ°λ₯ O(1)
let scores = ["roy": 95, "gucci": 82, "yeni": 90]
// λͺ¨λ O(1) μκ°
let royScore = scores["roy"] // 95
let gucciScore = scores["gucci"] // 82
scores["terry"] = 75 // μΆκ°
μ μ#
μ κ±°μ O(n)μ κ°λ₯μ±#
- κ° μ κ±° (removeValue(forKey: key))μ κ²½μ° κΈ°μ μ μΌλ‘λ O(1)λ‘ κ΅¬νλμ΄ μμ
- νμ§λ§ Copy-On-Write μ΅μ ν λλ¬Έμ O(n) 볡μ‘λλ₯Ό κ°μ§ μ μμ.
// 첫 λ²μ§Έ Dictionary
var dict1 = ["a": 1, "b": 2, "c": 3]
// dict2λ dict1κ³Ό λ©λͺ¨λ¦¬λ₯Ό 곡μ (Copy-on-Write)
var dict2 = dict1
// μ΄ μ κ±° μ°μ°μ dict1μ μμ νκΈ° μ μ μ 체 볡μ¬κ° νμν μ μμ (O(n))
dict1.removeValue(forKey: "a")
νμ©#
Key μ‘΄μ¬ νμΈ#
// π O(1) : μ§μ μ κ·Όν΄μ νμΈ
if dict["key"] != nil { ... }
// π± O(n) : λ°°μ΄λ‘ λ³ν ν μννκΈ° λλ¬Έμ λΉν¨μ¨μ μ΄λ€.
if dict.keys.contains("yeni") { ... }
Value μ‘°ν#
// π O(1) : ν΄μ κΈ°λ° μ§μ μ‘°ν
let value = scores["yeni"]
// π€© κ°μ΄ μμ μλ μμΌλ―λ‘ Optional μ²λ¦¬κ° νμνλ€.
if let score = scores["yeni"] {
print("Alice's score: \(score)")
}
GitHub Comments