MySQL Java JavaScript PHP Python HTML-CSS C-sharp

Tipuri de colecții - Interfața Collection

Pentru stocarea seturilor de date în Java se folosesc tablouri (array-uri). Totuși, acestea nu sunt întotdeauna convenabile, în special deoarece au o lungime fixă. Această problemă este rezolvată în Java prin utilizarea colecțiilor, care oferă nu doar flexibilitate în dimensiunea seturilor de obiecte, ci și implementarea unor algoritmi și structuri de date diverse, cum ar fi stiva, coada, arborele și altele.

Colecțiile sunt situate în pachetul java.util, astfel că înainte de a le folosi, trebuie să importăm acest pachet.

Deși există multe colecții în Java, toate formează o structură logică. În centrul tuturor colecțiilor se află utilizarea anumitor interfețe care definesc funcționalitatea de bază. Dintre aceste interfețe, menționăm următoarele:

  • Collection: interfața de bază pentru toate colecțiile și alte interfețe de colecții
  • Queue: moștenește interfața Collection și oferă funcționalități pentru structuri de tip coadă
  • Deque: moștenește interfața Queue și oferă funcționalități pentru cozi bidirecționale
  • List: moștenește interfața Collection și oferă funcționalități pentru liste simple
  • Set: extinde interfața Collection și este utilizată pentru stocarea seturilor de obiecte unice
  • SortedSet: extinde interfața Set pentru a crea colecții sortate
  • NavigableSet: extinde interfața SortedSet pentru a crea colecții cu funcționalități de căutare avansată
  • Map: destinată creării de structuri de tip dicționar, unde fiecare element are o cheie și o valoare; spre deosebire de alte interfețe, nu moștenește interfața Collection

Aceste interfețe sunt parțial implementate de clase abstracte:

  • AbstractCollection: clasă abstractă de bază pentru alte colecții, care implementează interfața Collection
  • AbstractList: extinde AbstractCollection și implementează interfața List, fiind destinată creării de liste
  • AbstractSet: extinde AbstractCollection și implementează interfața Set pentru crearea de seturi
  • AbstractQueue: extinde AbstractCollection și implementează interfața Queue, fiind destinată creării de cozi și stive
  • AbstractSequentialList: extinde AbstractList și implementează interfața List, fiind folosită pentru liste înlănțuite
  • AbstractMap: implementează interfața Map și este destinată creării de seturi de tip dicționar (perechi "cheie-valoare")

Prin utilizarea acestor interfețe și clase abstracte, Java oferă o gamă variată de colecții precum liste, seturi, cozi, dicționare și altele. Printre acestea se numără:

  • ArrayList: listă simplă de obiecte
  • LinkedList: listă înlănțuită
  • ArrayDeque: coadă bidirecțională, care permite inserarea și eliminarea atât la începutul, cât și la sfârșitul colecției
  • HashSet: set de obiecte, unde fiecare element are o cheie unică (hash)
  • TreeSet: set de obiecte sortate sub formă de arbore
  • LinkedHashSet: set înlănțuit de tip hash
  • PriorityQueue: coadă cu priorități
  • HashMap: structură de tip dicționar, unde fiecare obiect are o cheie unică și o valoare
  • TreeMap: structură de tip arbore, unde fiecare element are o cheie unică și o valoare

Interfața Collection

Interfața Collection este de bază pentru toate colecțiile și definește funcționalitatea principală:

public interface Collection<E> extends Iterable<E> {
   // definiții ale metodelor
}

Interfața Collection este generică și extinde interfața Iterable, ceea ce permite iterarea obiectelor colecțiilor în cicluri de tip for-each.

Printre metodele importante ale interfeței Collection se numără:

  • boolean add(E item): adaugă un obiect în colecție și returnează true dacă adăugarea a reușit
  • boolean addAll(Collection<? extends E> col): adaugă toate elementele din colecția col în colecția curentă și returnează true la succes
  • void clear(): elimină toate elementele din colecție
  • boolean contains(Object item): returnează true dacă obiectul item este în colecție
  • boolean isEmpty(): returnează true dacă colecția este goală
  • Iterator<E> iterator(): returnează un obiect Iterator pentru a parcurge elementele colecției
  • boolean remove(Object item): elimină obiectul item din colecție și returnează true dacă eliminarea a reușit
  • boolean removeAll(Collection<?> col): elimină toate elementele din colecția col din colecția curentă
  • boolean retainAll(Collection<?> col): elimină toate obiectele din colecția curentă, cu excepția celor din colecția col
  • int size(): returnează numărul de elemente din colecție
  • Object[] toArray(): returnează un tablou care conține toate elementele colecției

Toate colecțiile implementează aceste metode, astfel încât principiile de lucru cu colecțiile sunt uniforme. Acest lucru simplifică utilizarea colecțiilor, indiferent de tip. De exemplu, metoda add() adaugă un element în colecție, metoda remove() elimină un element, metoda clear() golește colecția, iar metoda size() returnează numărul de elemente din colecție.

← Lecția anterioară Lecția următoare →