Middle
Prečo nie sú pre rozhranie Iterator predpísané konkrétne implementácie?
sobes.tech AI
Odpoveď od AI
Rozhranie Iterator definuje zmluvu prechodu kolekcií. Konkrétne implementácie závisia od vnútornej štruktúry kolekcií (napríklad, ArrayList, LinkedList, HashSet). Poskytovanie univerzálnej implementácie by bolo neefektívne alebo nemožné, pretože musí brať do úvahy vlastnosti každého typu kolekcie.
Napríklad:
ArrayList.iterator()prechádza prvky podľa indexu.LinkedList.iterator()prechádza prvky nasledovaním ukazovateľov medzi uzlami.HashSet.iterator()prechádza prvky pomocou vnútorného poľa košov a prepojených zoznamov/červených-čiernych stromov.
Iba kolekcia sama vie, ako najefektívnejšie poskytnúť iterátor pre svoju dátovú štruktúru.