Junior — Middle
Při používání kolekcí, v jakých případech je procházení rychlejší: v ArrayList nebo v LinkedList?
sobes.tech AI
Odpověď od AI
Procházení prvků v kolekcích ArrayList a LinkedList v jazyce Java se liší podle jejich vnitřní struktury.
- ArrayList je založen na poli, takže přístup k prvku podle indexu je v čase O(1). Procházení pomocí cyklu for s indexy je velmi rychlé.
- LinkedList je dvousměrně vázaný seznam, kde přístup k prvku podle indexu vyžaduje projít seznam od začátku nebo konce, což trvá čas O(n).
Proto je procházení všech prvků pomocí iterátoru nebo cyklu foreach přibližně stejné u obou kolekcí, ale pokud se prochází pomocí indexů (například get(i) v cyklu), bude ArrayList výrazně rychlejší.
Příklad:
ArrayList<String> arrayList = new ArrayList<>();
LinkedList<String> linkedList = new LinkedList<>();
// naplnění seznamů
// Rychlé procházení v ArrayList
for (int i = 0; i < arrayList.size(); i++) {
String item = arrayList.get(i); // O(1)
}
// Pomalejší procházení v LinkedList s použitím indexů
for (int i = 0; i < linkedList.size(); i++) {
String item = linkedList.get(i); // O(n)
}
// Doporučuje se používat iterator nebo foreach pro LinkedList
for (String item : linkedList) {
// zpracování prvku
}
Tímto způsobem je procházení rychlejší v ArrayList, zvláště pokud je potřeba přístup podle indexu.