ArrayList və LinkedList


JavaBaxılıb 56

Bu təlimdə, arasındakı fərqləri görəcəyik ArrayListƏlaqəli siyahı ArrayList vs LinkedList detallarını izah edən nümunələrlə birlikdə.

ArrayList

Java-da ArrayList, dinamik ölçülü bir sıra yaratmaq üçün ən çox istifadə edilən məlumat quruluşudur. Abstrakt sinifini uzadır və tətbiq edir Java siyahısı interfeys. ArrayList arasındakı əsas fərq, massivin statik olmasıdır (elementləri əlavə edə və silə bilmirik), ArrayList dinamikdir (elementləri əlavə edə, çıxara və ya dəyişdirə bilərik)

Əlaqəli siyahı

Java LinkedList, hər cür məlumatı saxlaya bilən ikiqat əlaqəli bir siyahıdır. Bu uzanır AbstractList sinifini həyata keçirir List və Deque interfeyslər. Əvvəlki düyünə və sonrakı ardıcıl node ilə əlaqəni ehtiva etdiyi üçün ikiqat əlaqəli bir siyahıdır. LinkedList bir kolleksiya ehtiva edir qovşaqlarının və xətti bir məlumat quruluşunu həyata keçirir. Hər birinə zəng edirik element siyahıda bir qovşaq. Biz adını ilk kimi siyahıda element baş və sonuncu kimi element quyruq.

ArrayList və LinkedList

ArrayListƏlaqəli siyahı
Elementləri saxlamaq üçün dinamik massivdən istifadə edirElementləri saxlamaq üçün Double LinkedList istifadə edir
Performans daha yavaşdırPerformans daha sürətli olur
Yalnız Siyahını tətbiq etmək üçün istifadə edilə bilərSiyahı və Sıra tətbiq etmək üçün istifadə edilə bilər
Təsadüfi giriş təmin edirTəsadüfi giriş təmin etmir
Yalnız obyekt saxladığı üçün daha az yaddaş tuturHəm obyekt, həm də obyektin istinadını saxladığından daha çox yaddaş tutur
get (int index) O (1) performansını verirget (int index) O (n) performansını verir
Ən pis vəziyyətdə qaldırılma əməliyyatı performansı O (n) və ən yaxşı halda O (1)Çıxarma əməliyyatı O (1) performansını verir
Add metodu ən pis halda O (n) performansını verirƏlavə etmə metodu O (1) performansını verir

Oxşar

İndi fərqləri bildiyimiz üçün oxşarlıqlarını görək

  • Hər iki sinif List interfeysini tətbiq edir
  • Əlavə qaydasını saxlayır, yəni elementləri daxil etdiyi eyni qaydada göstərir.
  • Hər iki sinif də sinxronizasiya edilməyib.
  • İterator və listiterator uğursuzdur, yəni təkrarlayıcı yaratdıqdan sonra siyahı dəyişdirilərsə ConcurrentModificationException atır.

ArrayList və LinkedList nümunəsi

Bu nümunədə şəhər adlarını saxlamaq üçün ArrayList tipli bir ArrayList yaradırıq və əyalət adlarını saxlamaq üçün LinkedList of String tipini yaradırıq.

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;

public class ListDiffDemo {

  public static void main(String[] args) {
    ArrayList<String> cities = new ArrayList<String>();
    cities.add("Chennai");
    cities.add("Bangalore");
    cities.add("Mumbai");
    cities.add("Kolkata");
    cities.add(3, "Delhi");
    
    System.out.println("Elements in ArrayList: " + cities);
    
    
    List<String> states = new LinkedList<String>();
    states.add("Tamil Nadu");
    states.add("Karnataka");
    states.add("Maharashtra");
    states.add("West Bengal");
    states.add(3, "Delhi");

    System.out.println("Elements in LinkedList" + states);
    
  }

}
Elements in ArrayList: [Chennai, Bangalore, Mumbai, Delhi, Kolkata]
Elements in LinkedList[Tamil Nadu, Karnataka, Maharashtra, Delhi, West Bengal]

ArrayList və LinkedList nə vaxt istifadə ediləcək

  • Performans O (n) olan ArrayList ilə müqayisə edildikdə O (1) daha sürətli olduğundan, tez-tez daxil etmə və silmə əməliyyatı üçün LinkedList istifadə etmək həmişə yaxşı bir seçimdir.
  • ArrayList, O (n) olan LinkedList ilə müqayisə edərkən performans O (1) olduğundan elementləri axtarmaq üçün ən yaxşı əməliyyatdır. Bunun səbəbi, indeksə əsaslanan elementləri axtarmaq üçün bir sıra konsepsiyasından istifadə edərkən, LinkedList hər elementin içindən keçməsidir.

 

References

Şərh yaz

Translate »