Java’da ArrayList ve LinkedList

Java Collections Framework, dinamik veri depolamak ve yönetmek için farklı yapılar sunar. En çok kullanılan iki liste yapısı ArrayList ve LinkedList’tir. Her ikisi de List arayüzünü (interface) uygular fakat çalışma prensipleri, performansları ve kullanım alanları farklıdır.

Bu yazıda ArrayList ve LinkedList nedir, nasıl çalışır, farkları nelerdir, avantajları ve dezavantajlarıyla birlikte örnek kullanımlarıyla açıklayacağız.


ArrayList Nedir?

ArrayList, dinamik olarak büyüyebilen, dizi (array) tabanlı bir listedir. Elemanlar arka arkaya hafızada saklanır. Boyutu önceden bilinmeyen veya sıkça değişen listeler için idealdir.

Özellikleri

  • Rastgele erişim (random access) hızlıdır, çünkü elemanlar indeksle erişilir.
  • Eleman ekleme/silme, özellikle ortada yapılıyorsa maliyetlidir çünkü elemanların kaydırılması gerekir.
  • Thread-safe değildir (çoklu iş parçacığı için Vector veya Collections.synchronizedList kullanılır).

🔗 LinkedList Nedir?

LinkedList, düğümler (node) üzerinden bağlantılı bir listedir. Her eleman, hem kendi verisini hem de bir sonraki ve önceki elemanın referansını tutar.

Özellikleri

  • Eleman ekleme/silme, özellikle listenin başında ya da ortasında hızlıdır (referansların güncellenmesi yeterlidir).
  • Rastgele erişim (indeksleme) yavaştır, çünkü listedeki n. elemana erişmek için baştan saymak gerekir.
  • Aynı zamanda Deque arayüzünü implemente ederek kuyruk ve yığın gibi veri yapıları için de kullanılır.

🧑‍💻 Kullanım Örnekleri

ArrayList Örneği

import java.util.ArrayList;

public class Ornek {
    public static void main(String[] args) {
        ArrayList<String> meyveler = new ArrayList<>();
        meyveler.add("Elma");
        meyveler.add("Muz");
        meyveler.add("Çilek");

        System.out.println(meyveler.get(1));  // Muz

        meyveler.remove(0);
        System.out.println(meyveler);  // [Muz, Çilek]
    }
}

LinkedList Örneği

import java.util.LinkedList;

public class Ornek {
    public static void main(String[] args) {
        LinkedList<String> sehirler = new LinkedList<>();
        sehirler.add("İstanbul");
        sehirler.add("Ankara");
        sehirler.add("İzmir");

        sehirler.addFirst("Bursa");
        System.out.println(sehirler);  // [Bursa, İstanbul, Ankara, İzmir]

        sehirler.removeLast();
        System.out.println(sehirler);  // [Bursa, İstanbul, Ankara]
    }
}


ArrayList ve LinkedList Karşılaştırması

ÖzellikArrayListLinkedList
Veri YapısıDinamik dizi (array)Çift yönlü bağlı liste (doubly linked list)
EklemeSona hızlı, ortada yavaşBaşta/ortada hızlı, sonda hızlı
SilmeOrtada yavaş (kaydırma gerekir)Başta/ortada hızlı (referans güncelleme)
Rastgele ErişimÇok hızlı (indeks ile)Yavaş (düğümler gezilir)
Bellek KullanımıDaha az (sadece veri saklanır)Daha fazla (her düğümde veri + 2 referans)
Çoklu İş ParçacığıThread-safe değilThread-safe değil

Ne Zaman Hangisini Kullanmalı?

  • ArrayList: Elemanlara sık sık indeksle erişiyorsanız ve liste boyutu sık değişmiyorsa tercih edilir.
  • LinkedList: Sık sık ekleme/silme yapılıyorsa ve liste başından/ortasından işlem yapılacaksa daha uygundur.
guest
0 Yorum
Eskiler
En Yeniler Beğenilenler
Inline Feedbacks
View all comments
0
YORUM YAPx