Java'da ArrayList ile LinkedList Arasındaki Fark

Yazar: Laura McKinney
Yaratılış Tarihi: 3 Nisan 2021
Güncelleme Tarihi: 15 Mayıs Ayı 2024
Anonim
Java'da ArrayList ile LinkedList Arasındaki Fark - Teknoloji
Java'da ArrayList ile LinkedList Arasındaki Fark - Teknoloji

İçerik


ArrayList ve LinkedList Toplamak sınıfları ve her ikisi de uygular Liste arabirimi. ArrayList sınıfı, içinde dahili olarak depolanan bir liste oluşturur. dinamik dizi Öğeler eklendiğinde veya silindiğinde boyut büyür veya küçülür. LinkedList ayrıca dahili olarak kaydedilmiş bir liste oluşturur. iki misli Bağlantılı Liste. Her iki sınıf da listedeki öğeleri depolamak için kullanılır, ancak ArrayList ve LinkedList sınıfları arasındaki en büyük fark, ArrayList Listedeki öğelere rastgele erişime izin verir. endeks bazlı veri yapısı. Öte yandan, Bağlantılı liste öğelere doğrudan erişmek için dizinleri olmadığı için rastgele erişime izin vermez, listeden bir öğeyi almak veya erişmek için listeyi dolaşmak zorundadır.

ArrayList ve LinkedList arasındaki bazı farklılıkları aşağıda gösterilen karşılaştırma tablosunun yardımıyla tartışalım.


  1. Karşılaştırma Tablosu
  2. Tanım
  3. Anahtar Farklılıklar
  4. Sonuç

Karşılaştırma Tablosu

Karşılaştırma için temelArrayListBağlantılı liste
Temel ArrayList listedeki öğelere rasgele erişime izin verir.LinkedList listedeki öğelere rasgele erişime izin vermiyor.
Veri yapısıÖğeleri depolamak için kullanılan iç yapı dinamik dizidir.Öğeleri saklamak için kullanılan iç yapı iki kat bağlantı listesidir.
UzattıArrayList, AbstarctList sınıfını genişletir.LinkedList, AbstractSequentialList öğesini genişletir.
uygularAbstractList Liste arayüzünü uygular.LinkedList, List, Deque, Queue uygular.
Erişim ArrayList'te listedeki öğelere erişim daha hızlıdır.LinkedList'te listedeki öğelere erişim daha yavaştır.
hileArrayList'te listedeki öğelere değişiklik yapmak daha yavaştır.LinkedList'te listedeki öğelere değişiklik yapmak daha hızlıdır.
davranışArraylList, listeyi uyguladığı gibi Liste olarak davranır.LinkedList, hem List hem de Kuyruğu uygulayan Sıra kadar Liste davranır.


ArrayList'un tanımı

AbstractList sınıf, Koleksiyon Çerçevesi. Uzatır AbstarctList ve uygular Liste arabirimi. ArrayList kullanır dinamik dizi yani, elemanları listeye koymak için bir iç veri yapısı olarak değişken uzunluklu bir dizi. ArrayList'in ihtiyacı, java'daki dizinin sabit uzunlukta olması nedeniyle ortaya çıkar. Böylece, elemanlar diziden eklendiğinde ya da silindiğinde büyüyemez ya da daralmaz. Bu nedenle, önceden istenen dizinin boyutunu bilmeniz gerekir. Ancak, ArrayList sınıfı kullanılarak uygulanan dizi listesi, öğeler diziden eklendiğinde veya silinirken boyut olarak küçülebilir.

ArrayList kullanılarak uygulanan dizi listesine erişilebilir. rasgele ArrayList, dizin temelinde çalışır. Yani indeksi bilerek doğrudan listenin elemant erişebilirsiniz. Üç ArrayList kurucusu var:

ArrayList () ArrayList (Koleksiyon <? E> c'yi uzatır) ArrayList (int kapasitesi)

ilk Yapıcı boş bir dizi listesi uygular. ikinci Yapıcı, kullanılarak başlatılan bir dizi listesini uygular. C koleksiyonu elementler. üçüncü Yapıcı, dizi listesini uygular. kapasite argümanda verilmiştir. ArrayList ile çalışmak, bazen Koleksiyon ArrayList'i bir diziye dönüştürmeniz gerekebilir. Arayarak yapılabilir sıralamak().

LinkedList'un tanımı

ArrayList gibi Bağlantılı liste ayrıca bir Toplamak sınıf kullanır iki kat bağlantılı liste Öğeleri listede depolamak için dahili bir veri yapısı olarak. LinkedList sınıfı AbstractSequentialList ve uygular Liste, deque ve kuyruk arabirimleri. LinkedList kullanılarak uygulanan bağlantılı listeye rastgele erişilemiyor. Listeden herhangi bir öğeyi almak istiyorsanız, bu öğeyi aramak için listeyi yinelemeniz gerekir.

LinkedList sınıfında iki yapıcı vardır.

LinkedList () LinkedList (Koleksiyon <? E> c'yi uzatır)

ilk Yapıcı boş bir bağlantılı liste oluşturur. ikinci Yapıcı, elemanları ile ilklendirilen bağlantılı bir liste oluşturur. Toplamak c.

LinkedList'te listenin manipülasyonu kolay ve hızlıdır. Bunun nedeni listedeki herhangi bir öğeyi ekler veya silerseniz, öğeleri ArrayList'teki gibi değiştirmeye gerek kalmaz. Ancak, elemanlara doğrudan erişmek için indeks bulunmadığından erişim daha yavaştır.

  1. ArrayList tarafından uygulanan listeye rasgele erişilebilir, çünkü ArrayList dizinin dizine dayalı veri yapısını benimser. Öte yandan, LinkedList tarafından uygulanan listeye rastgele erişilemiyor çünkü listedeki belirli bir öğeye erişmek veya listeden geçmek için listeyi geçmek zorundasınız.
  2. ArrayList tarafından listenin öğelerini saklamak için kullanılan dahili veri yapısı, dinamik dizi öğeler listeye eklendiğinde veya silindiğinde büyüyebilir veya daralabilir. Ancak LinkedList tarafından öğeleri listede depolamak için kullanılan dahili veri yapısı, iki kat bağlantılı liste.
  3. ArrayList, AbstractList Aynı zamanda bir Koleksiyon sınıfı olan sınıf, LinkedList sınıfı ise AbstractSequentialList yine bir Koleksiyon sınıfı olan sınıf.
  4. ArrayList sınıfı uygular Liste Arayüz ise, LinkedList sınıfı uygular Liste, kuyruk, ve deque arabirimleri.
  5. ArrayList kullanılarak uygulanan listedeki öğelere erişmek Daha hızlı dizin tabanlı bir veri yapısına sahip olduğu için. Diğer taraftan, listedeki LinkledList uygulaması tarafından indeks temelli bir yapı yoktur. Bu nedenle, erişilecek olan erişilen öğeye ulaşmak için listeye bir yineleyici uygulanır. Yavaş LinkedList'te.
  6. Manipülasyon ArrayList kullanılarak uygulanan listede Manipülasyon'dur çünkü listeye bir öğe eklendiğinde veya silindiğinde, listedeki öğeler değişikliğe uyması için kaydırılır. Diğer yandan, LinkedList'in uyguladığı listede manipülasyon daha hızlıdır çünkü listedeki öğelerin listeye eklenmesini veya silinmesini gerektirmez.
  7. ArrayList gibi davranır liste List arayüzünü uygularken, LinkedList ise liste ve kuyruk Liste ve Kuyruğu her ikisini de uyguladığı gibi.

Sonuç:

Listedeki öğelerin sık sık eklenmesi veya silinmesi durumunda, manipülasyon sırasında daha iyi performans gösterdiği için LinkedList kullanılmalıdır. Listeye sık arama uygulanırsa, listedeki öğelere erişirken daha iyi performans gösterdiğinden ArrayList en iyi seçimdir.