Junior — Middle
Bij het gebruik van collecties, in welke gevallen is het doorlopen sneller: in ArrayList of in LinkedList?
sobes.tech AI
Antwoord van AI
Het itereren van elementen in de collecties ArrayList en LinkedList in Java verschilt qua prestaties vanwege hun interne structuur.
- ArrayList is gebaseerd op een array, dus toegang tot een element op indextijd is O(1). Itereren met een for-lus met indices is zeer snel.
- LinkedList is een dubbel gekoppelde lijst, waarbij toegang tot een element op indextijd het doorlopen van de lijst vanaf het begin of het einde vereist, wat O(n) tijd kost.
Daarom is het itereren door alle elementen met een iterator of een foreach-lus ongeveer hetzelfde voor beide collecties, maar als de iteratie met behulp van indices plaatsvindt (bijvoorbeeld get(i) in een lus), dan is ArrayList veel sneller.
Voorbeeld:
ArrayList<String> arrayList = new ArrayList<>();
LinkedList<String> linkedList = new LinkedList<>();
// vullen van lijsten
// Snelle iteratie in ArrayList
for (int i = 0; i < arrayList.size(); i++) {
String item = arrayList.get(i); // O(1)
}
// Trage iteratie in LinkedList met indices
for (int i = 0; i < linkedList.size(); i++) {
String item = linkedList.get(i); // O(n)
}
// Het wordt aanbevolen om een iterator of foreach te gebruiken voor LinkedList
for (String item : linkedList) {
// verwerking van het element
}
Dus, de iteratie is sneller in ArrayList, vooral als indextoegang nodig is.