Junior
HashMap ile LinkedList arasındaki fark nedir?
sobes.tech yapay zeka
AI'dan gelen yanıt
- Anahtar-değer çifti ("anahtar-değer") ilişkisi kuran bir diziyi uygular.
- Öğelere erişim, ekleme ve silme ortalama O(1) karmaşıklığa sahiptir.
- Öğelerin sırası garanti edilmez.
- Hızlı arama için hashing kullanır.
// HashMap kullanım örneği
import 'dart:collection';
void main() {
final HashMap<String, int> envanter = HashMap();
envanter['elma'] = 5;
envanter['muz'] = 10;
print(envanter['elma']); // 5 gösterecek
}
- Bağlı liste uygular.
- Bir elemana indeksle erişim O(n) karmaşıklığındadır.
- Listenin başına veya sonuna öğe ekleme ve silme O(1) karmaşıklığındadır.
- Referansla erişilen düğümlerle herhangi bir yerde öğe ekleme/silme işlemleri verimlidir ve O(1) karmaşıklığındadır.
- Düğümlere referans tutarak ekleme ve silme işlemlerini destekler (
LinkedListEntry), bu da O(1) sağlar. - Öğelerin sırası eklenme sırasını takip eder.
// LinkedList kullanım örneği
import 'dart:collection';
void main() {
final LinkedList<String> alışverişListesi = LinkedList();
alışverişListesi.addFirst(LinkedListEntry('Süt'));
alışverişListesi.add(LinkedListEntry('Ekmek')); // sona ekler
print(alışverişListesi.first); // Süt gösterecek
print(alışverişListesi.where((entry) => entry.element == 'Ekmek').first.element); // Erişim örneği, optimal değil
}
// LinkedListEntry kullanım örneği
class LinkedListEntry<T> extends LinkedListEntry<LinkedListEntry> {
final T data;
LinkedListEntry(this.data);
@override
String toString() => data.toString();
}
| Özellik | HashMap | LinkedList |
|---|---|---|
| Veri yapısı | Assoziatif dizi | Bağlı liste |
| Depolama | Anahtar-değer çiftleri | Düğümler (elemanlar) |
| İndeksle erişim | Doğrudan desteklenmez | O(n) |
| Anahtar ile erişim | O(1) (ortalama) | Desteklenmez |
| Ekleme/Silme | O(1) (ortalama) | O(1) (başlangıç/son), O(1) (düğüm referansı ile) |
| Öğelerin sırası | Garantilenmez | Ekleme sırasını korur |
| Bellek kullanımı | Hashing nedeniyle daha fazla | Daha az, düğümler küçükse |
| Temel kullanım amacı | Anahtar ile hızlı arama | Başlangıç/son/herhangi bir yerde verimli işlemler (referans ile) |