ArrayList vs LinkedList: Hangisi Daha Hızlı? (Performans Testi)

crazy_coder

Moderatör
Katılım
20 Şub 2026
Mesajlar
204
Tepkime puanı
0
Puanları
16
ArrayList vs LinkedList: Hız ve Bellek Savaşı



1. Arka Plan Mimarisi​


Performans farkını anlamak için önce "kaputun altına" bakmalıyız:

ArrayList: Arka planda dinamik bir dizi (array) kullanır. Elemanlar bellekte yan yana (sıralı) durur. Tıpkı bir apartmandaki daireler gibidir; numarayı (index) biliyorsanız kapıya anında gidersiniz.

LinkedList: Arka planda çift yönlü bağlı liste (doubly linked list) kullanır. Her eleman (node) kendi değerini ve bir önceki/sonraki elemanın adresini tutar. Tıpkı bir hazine avı gibidir; bir sonraki ipucunu bulmak için elinizdeki ipucuna bakmanız gerekir.

2. Performans Karşılaştırması (Big O Notation)​


İşlemArrayListLinkedListKazanan
Erişim (get/set)O(1)O(n)ArrayList
Sona Ekleme (add)O(1)*O(1)Berabere
Başa/Araya EklemeO(n)O(1)LinkedList
Silme (remove)O(n)O(1)LinkedList

Neden ArrayList Erişimde Hızlı?​

ArrayList, indeksi kullanarak bellekteki adresi matematiksel olarak hesaplar: adres=baslangic+(index×boyut). Bu işlem anlıktır (O(1)). LinkedList ise 500. elemana ulaşmak için ilk 499 elemanı tek tek gezmek zorundadır (O(n)).

Neden LinkedList Ekleme/Silmede Hızlı?​

ArrayList'in ortasından bir eleman sildiğinizde, sağdaki tüm elemanların birer adım sola kaydırılması gerekir. Bu çok maliyetlidir. LinkedList'te ise sadece komşu düğümlerin (nodes) birbirini gösteren adreslerini (pointer) güncellemek yeterlidir.

3. Bellek Kullanımı​


ArrayList: Daha az bellek tüketir. Sadece verileri ve dizinin kapasitesini tutar.

LinkedList: Daha fazla bellek tüketir. Her bir veri için ek olarak "önceki" ve "sonraki" elemanların adreslerini de saklamak zorundadır.

4. Hangisini Seçmelisiniz?​

Şunlar için ARRAYLIST kullanın:

Verilere sık sık indeks ile erişiyorsanız (Örn: liste.get(50)).

Listenin sonuna eleman eklemek dışında çok fazla ekleme/çıkarma yapmıyorsanız.

Bellek kullanımı sizin için kritikse.

Genel kural: Çoğu senaryoda ArrayList daha performanslıdır.

Şunlar için LINKEDLIST kullanın:

Listenin başına veya ortasına sürekli eleman ekleyip çıkarıyorsanız.

Veri setiniz çok büyük değilse veya erişim hızından ziyade esneklik önemliyse.

Listeniz bir Stack (Yığın) veya Queue (Kuyruk) gibi davranacaksa.



Sonuç

2026'nın modern donanımlarında (CPU Cache yapısı nedeniyle), ArrayList verileri bellekte yan yana tuttuğu için çoğu zaman LinkedList'ten çok daha hızlı çalışır. Ancak özel bir "araya ekleme" senaryonuz varsa LinkedList hala can kurtarıcıdır.
 
Geri
Üst