Sobes.tech
Junior

Java-da LinkedList və ArrayList arasındakı əsas fərqlər nələrdir?

sobes.tech Süni İntellekt

AI-dan cavab

Əsas fərqlər LinkedListArrayList arasında daxili məlumat strukturlarında və nəticədə müxtəlif əməliyyatların performansında yerləşir:

Daxili struktur:

  • ArrayList elementləri saxlamaq üçün dinamik massiv istifadə edir.
  • LinkedList hər bir düyüm məlumatlar və əvvəlki və növbəti düyümlərə istinadlar ehtiva edən ikitərəfli əlaqəli siyahı istifadə edir.

Əməliyyatların performansı:

Əməliyyat ArrayList LinkedList Səbəb
Sonuna əlavə etmək O(1) O(1) ArrayList adətən yer olur, LinkedList isə yeni düyümü sona əlavə etmək asandır.
Başlanğıca və ya ortaya əlavə O(n) O(1) ArrayList elementləri hərəkət etdirməyi tələb edir. LinkedList isə sadəcə bəzi istinadları dəyişir.
Sonundan silmək O(1) O(1) ArrayList hərəkət etdirmə olmadan. LinkedList isə asanlıqla son düyünü silə bilər.
Başlanğıc və ya ortadan silmək O(n) O(1) ArrayList elementləri hərəkət etdirməyi tələb edir. LinkedList isə sadəcə bəzi istinadları dəyişir.
Elementə indekslə çıxış etmək O(1) O(n) ArrayList indekslə birbaşa çıxış. LinkedList isə siyahını keçməlidir.
Element axtarışı O(n) O(n) Hər iki halda bütün siyahını skan etmək lazımdır.

Yaddaş istifadəsi:

  • LinkedList ümumiyyətlə daha çox yaddaş sərf edir, çünki əlavə istinadlar saxlanılır. |

Tətbiq sahələri:

  • ArrayList indekslə çıxış və sona əlavə/silme əməliyyatlarının tez-tez olduğu hallarda üstünlük təşkil edir.
  • LinkedList isə siyahının başlanğıcında və ya ortasında element əlavə və silmə əməliyyatlarının çox olduğu hallarda uyğundur.

Nümunə: Başlanğıca əlavə etmək

// ArrayList
ArrayList<String> arrayList = new ArrayList<>();
arrayList.add(0, "First"); // O(n) - elementlərin hərəkəti lazımdır

// LinkedList
LinkedList<String> linkedList = new LinkedList<>();
linkedList.addFirst("First"); // O(1) - sadəcə istinadlar dəyişir