Swift'te sözlük nasıl yapılandırılmıştır?
sobes.tech yapay zeka
AI'dan gelen yanıt
Swift'teki Dictionary (Sözlük), düzenlenmemiş anahtar-değer çiftlerinden oluşan bir koleksiyonu temsil eder.
Ana özellikler:
- Düzenlenmemiş: Öğelerin sırası garanti edilmez.
- Benzersiz anahtarlar: Sözlükteki her anahtar benzersiz olmalıdır.
- Hashlenebilir anahtarlar: Anahtar tipi hashlenebilir olmalıdır (yani,
Hashableprotokolüne uygun olmalı).String,Int,Double,Boolve çoğu yapı varsayılan olarak hashlenebilir. - Tip belirleme: Sözlük, anahtarlar ve değerler açısından katı tiptedir.
- Depolama: Bir hash tabanı üzerine uygulanmıştır, bu da ekleme, silme ve anahtar ile erişim işlemlerinde yüksek verimlilik sağlar (ortalama O(1)).
Sözlük oluşturma:
// Boş sözlük
var emptyDictionary: [String: Int] = [:]
// Başlangıç değerleri ile sözlük
let cities: [String: String] = [
"London": "UK",
"Paris": "France",
"Tokyo": "Japan"
]
Erişim ve değiştirme:
// Anahtar ile erişim (Optional döner)
let country = cities["Paris"] // Optional("France")
// Değer ekleme veya güncelleme
var scores: [String: Int] = ["Alice": 100, "Bob": 85]
scores["Charlie"] = 90 // Ekleme
scores["Alice"] = 105 // Güncelleme
// Değer silme
scores["Bob"] = nil // "Bob" anahtarına sahip öğeyi silme
Döngü:
for (city, country) in cities {
print("\(city) in \(country)")
}
for city in cities.keys {
print("Şehir: \(city)")
}
for country in cities.values {
print("Ülke: \(country)")
}
İç yapısı (genel olarak):
Swift, bir hash tabanlı yapının değiştirilmiş bir uygulamasını kullanır. "Anahtar-değer" çifti eklenirken:
- Anahtarın hash değeri hesaplanır.
- Hash değeri, öğenin yerleştirileceği "kova"yı (bucket) belirlemek için kullanılır.
- Eğer kovada zaten öğeler varsa, çakışma çözüm mekanizması (örneğin, zincirleme veya açık adresleme) kullanılır.
Çoğu işlemin performansı (ekleme, silme, erişim), hash'ler düzgün dağıldığında ve az sayıda çakışma olduğunda O(1) civarındadır. En kötü durumda (tüm hash'ler tek bir kovaya düşerse), performans O(n)'ye düşebilir, ancak bu, iyi hash fonksiyonları ve yeterli boyuttaki hash tablosu ile nadiren olur. Öğelerin sayısı arttıkça, sözlük rehashing yapabilir, iç yapıyı büyüterek verimliliği koruyabilir, bu da nispeten maliyetli bir işlem olabilir.