Junior — Middle
Kolleksiyalar istifadə edilərkən, hansı hallarda keçid daha sürətlidir: ArrayList və ya LinkedList-də?
sobes.tech Süni İntellekt
AI-dan cavab
Java-da ArrayList və LinkedList kolleksiyalarında elementlərin təkrarlanması daxili quruluşlarına görə performans fərqlidir.
- ArrayList massivə əsaslanır, ona görə indeksə görə elementə giriş O(1) vaxtında baş verir. İndeks ilə for dövrü ilə təkrarlama çox sürətlidir.
- LinkedList iki tərəfli bağlı siyahıdır, burada indeksə görə elementə giriş siyahını başlanğıc və ya sonundan keçməyi tələb edir, bu da O(n) vaxt alır.
Bu səbəbdən, iterator və ya foreach istifadə edərək bütün elementləri təkrarlamaq hər iki kolleksiyada təxminən eynidir, amma indekslərdən istifadə edilərək (məsələn, get(i) ilə) təkrarlama aparılırsa, ArrayList əhəmiyyətli dərəcədə daha sürətli olacaq.
Nümunə:
ArrayList<String> arrayList = new ArrayList<>();
LinkedList<String> linkedList = new LinkedList<>();
// siyahıları doldurma
// ArrayList-də sürətli təkrarlama
for (int i = 0; i < arrayList.size(); i++) {
String item = arrayList.get(i); // O(1)
}
// LinkedList-də yavaş təkrarlama indekslərdən istifadə edərək
for (int i = 0; i < linkedList.size(); i++) {
String item = linkedList.get(i); // O(n)
}
// LinkedList üçün iterator və ya foreach istifadə etmək tövsiyə olunur
for (String item : linkedList) {
// elementin işlənməsi
}
Beləliklə, ArrayList-də təkrarlama daha sürətlidir, xüsusən indeksə giriş lazım olduqda.