Ordinea elementelor dintr-o colecție nu este esentială, dar trebuie să existe o modalitate de a parcurge toate elementele colecției pentru a căuta elementul dorit.
Principala deosebire dintre colecție și structurile de tablou și de înregistrare, deja studiate, constă tocmai în faptul că numărul de elemente ale colecției este variabil, în timp ce la tablou si înregistrare el este fixat în momentul în care se creează structura respectivă. Din această cauză, se mai spune că tabloul și înregistrarea sunt structuri statice, în timp ce colecțiile sunt structuri dinamice.
Iteratorul este un obiect care indică, la un moment
dat, unul din elementele colecției și permite să se efectueze anumite
operații asupra elementului colecției indicat de către iterator, cum ar
fi:
- vizitarea elementului de colecție indicat de iterator;
- eliminarea elementului indicat de iterator (operație optională);
- poziționarea iteratorului pe elementul următor al colecției.
Denumirea de iterator provine tocmai de la faptul că acesta poate să treacă de la un element al colecției la altul, deci permite aplicarea unor algoritmi iterativi pe colecția respectivă.
Principalele operații care se fac asupra unei colecții sunt:
- adăugarea unui nou element la colecție;
- traversarea colecției, adică parcurgerea colecției element după
element cu posibilă "vizitare" a elementului parcurs;
- căutarea unui element într-o colecție;
- eliminarea unui element din colecție.
In Java, iteratorul este instanță a unei clase care
implementează interfața java.util.Iterator.
Interfata java.util.Collection conține 15 metode,
dintre care unele sunt obligatorii, iar altele sunt opționale. Dacă este
invocată una din metodele opționale corespunzătoare unei operații
nepermise într-o anumită clasă de colecții, ea trebuie să genereze o
excepție din clasa java.lang.UnsupportedOperationException.
Metodele care realizează operații obligatorii pentru
toate clasele care implementează interfața Collection sunt următoarele: Metodele care realizează operații opționale pentru
clasele care implementează interfața Collection sunt următoarele: Remarcăm că metodele opționale trebuie să existe în orice clasă care implementează interfața Collection, la fel ca cele obligatorii; singura deosebire este că, daca o anumită operație optională nu este permisă într-o astfel de clasă, metoda respectivă nu face altceva, decât că întoarce o UnsupportedOperationException. Interfața java.util.Iterator contine numai trei metode,
din care numai primele două sunt operații obligatorii: Fiecărei clase care implementează interfața Collection trebuie să i se asocieze în mod obligatoriu cel puțin o clasă cu interfața Iterator, ale cărei instanțe sunt iteratori pentru colecția respectivă. |
În clasa AbstractCollection sunt definite toate metodele
interfeței Collection, cu următoarele excepții, care sunt păstrate ca metode
abstracte: public abstract Iterator iterator() public abstract int size() Celelalte metode sunt implementate, dar cele care corespund unor operatii opționale întorc o UnsupportedOperationException. În consecință, programatorul care creează o subclasă cu interfața Collection trebuie să definească numai cele două metode abstracte specificate mai sus și - dacă este cazul - să redefinească metodele opționale. În clasa AbstractCollection este, de asemenea, redefinită
metoda moștenită de la clasa Object |