Sobes.tech
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.