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 LinkedList və ArrayList arasında daxili məlumat strukturlarında və nəticədə müxtəlif əməliyyatların performansında yerləşir:
Daxili struktur:
ArrayListelementləri saxlamaq üçün dinamik massiv istifadə edir.LinkedListhə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:
ArrayListindekslə çıxış və sona əlavə/silme əməliyyatlarının tez-tez olduğu hallarda üstünlük təşkil edir.LinkedListisə 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