logo

ArrayList ve LinkedList Arasındaki Fark

ArrayList ve LinkedList'in her ikisi de Liste arayüzünü uygular ve ekleme sırasını korur. Her ikisi de senkronize olmayan sınıflardır.

dizeye karakter

Ancak ArrayList ve LinkedList sınıfları arasında aşağıda verilen pek çok farklılık bulunmaktadır.

Dizi ListesiBağlantılı liste
1) ArrayList dahili olarak bir dinamik dizi elemanları saklamak için.LinkedList dahili olarak bir çift ​​bağlantılı liste elemanları saklamak için.
2) ArrayList ile manipülasyon yavaş çünkü dahili olarak bir dizi kullanıyor. Diziden herhangi bir öğe çıkarılırsa, diğer tüm öğeler bellekte kaydırılır.LinkedList ile manipülasyon: Daha hızlı ArrayList'ten daha iyidir çünkü çift bağlantılı bir liste kullanır, dolayısıyla bellekte bit kaydırmaya gerek yoktur.
3) Bir ArrayList sınıfı şunları yapabilir: liste görevi gör yalnızca Listeyi uyguladığı için.LinkedList sınıfı şunları yapabilir: liste ve kuyruk görevi görür her ikisi de List ve Deque arayüzlerini uyguladığı için.
4) ArrayList: depolamak ve erişmek için daha iyi veri.Bağlantılı Liste: manipüle etmek için daha iyi veri.
5) ArrayList'in elemanlarının hafıza konumu bitişiktir.Bağlantılı bir listenin öğelerinin konumu bulaşıcı değildir.
6) Genel olarak, bir ArrayList başlatıldığında, ArrayList'e varsayılan olarak 10 kapasitesi atanır.LinkedList'te varsayılan kapasite durumu yoktur. LinkedList'te, LinkedList başlatıldığında boş bir liste oluşturulur.
7) Daha kesin olmak gerekirse, ArrayList yeniden boyutlandırılabilir bir dizidir.LinkedList, liste arayüzünün çift bağlantılı listesini uygular.

Java'da ArrayList ve LinkedList örneği

ArrayList ve LinkedList'in her ikisini de kullandığımız basit bir örneğe bakalım.

Dosya adı: TestArrayLinked.java

 import java.util.*; class TestArrayLinked{ public static void main(String args[]){ List al=new ArrayList();//creating arraylist al.add('Ravi');//adding object in arraylist al.add('Vijay'); al.add('Ravi'); al.add('Ajay'); List al2=new LinkedList();//creating linkedlist al2.add('James');//adding object in linkedlist al2.add('Serena'); al2.add('Swati'); al2.add('Junaid'); System.out.println('arraylist: '+al); System.out.println('linkedlist: '+al2); } } 
Şimdi Test Edin

Çıktı:

arraylist: [Ravi,Vijay,Ravi,Ajay] linkedlist: [James,Serena,Swati,Junaid] 

Hatırlanacak noktalar

ArrayList ve LinkedList ile ilgili hatırlanması gereken bazı önemli noktalar aşağıdadır.

  • Ekleme veya çıkarma oranı okuma senaryolarından daha fazla olduğunda LinkedList'i tercih edin. Öte yandan, okuma senaryolarının sıklığı ekleme veya çıkarma oranından fazla olduğunda ArrayList, LinkedList'e göre öncelik kazanır.
  • ArrayList'in elemanları LinkedList'e kıyasla daha kompakt bir şekilde depolandığından; bu nedenle ArrayList, LinkedList'e kıyasla daha önbellek dostudur. Bu nedenle, ArrayList'te önbellek kaçırma şansı LinkedList'e kıyasla daha azdır. Genel olarak LinkedList'in önbellek konumu açısından zayıf olduğu kabul edilir.
  • LinkedList'teki bellek yükü ArrayList'e kıyasla daha fazladır. Bunun nedeni, LinkedList'te, önceki ve sonraki düğümlerin adresini depolamak için gerekli olduğundan iki ekstra bağlantıya (sonraki ve önceki) sahip olmamız ve bu bağlantıların fazladan alan tüketmesidir. Bu tür bağlantılar ArrayList'te mevcut değildir.