Sobes.tech
Junior — Middle

Koleksiyonlar kullanılırken, hangi durumda dolaşma daha hızlı gerçekleşir: ArrayList'te mi yoksa LinkedList'te mi?

sobes.tech yapay zeka

AI'dan gelen yanıt

Java'da ArrayList ve LinkedList koleksiyonlarındaki öğelerin yinelemesi, iç yapıları nedeniyle performans açısından farklılık gösterir.

  • ArrayList, bir diziye dayanır, bu nedenle indekse göre öğeye erişim O(1) süresindedir. İndeksli döngü kullanarak yineleme çok hızlıdır.
  • LinkedList, çift bağlı bir listedir ve indekse göre öğeye erişim, listenin başından veya sonundan geçmeyi gerektirir, bu da O(n) zaman alır.

Bu nedenle, bir iterator veya foreach döngüsü kullanarak tüm öğeleri yinelemek her iki koleksiyon için yaklaşık olarak aynıdır, ancak indeks kullanılarak (örneğin, get(i) ile) yineleme yapılırsa, ArrayList çok daha hızlı olacaktır.

Örnek:

ArrayList<String> arrayList = new ArrayList<>();
LinkedList<String> linkedList = new LinkedList<>();
// listeleri doldurma

// ArrayList'te hızlı yineleme
for (int i = 0; i < arrayList.size(); i++) {
    String item = arrayList.get(i); // O(1)
}

// LinkedList'te yavaş yineleme, indeks kullanılarak
for (int i = 0; i < linkedList.size(); i++) {
    String item = linkedList.get(i); // O(n)
}

// LinkedList için iterator veya foreach kullanılması önerilir
for (String item : linkedList) {
    // öğeyi işle
}

Bu nedenle, ArrayList'te yineleme daha hızlıdır, özellikle indeks erişimi gerekiyorsa.