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.