La Java Collection Framework – Lezione 27 di Java Avanzato

Nel corso degli anni la libreria Java si è dotata di molte collezioni che sono andate a formare la Java Collection Framework (JCF). Si tratta della libreria standard dedicata alle collezioni, intese come classi deputate a contenere altri oggetti. Questa libreria contiene strutture dati di supporto come liste, array di dimensione dinamica, insiemi, mappe associative e code.

I parametri di tipo mettono in evidenza tutta la loro utilità con le collezioni. Una stessa struttura dati può essere utilizzata svariate volte con i tipi parametrici, inoltre con questi ultimi il codice dei programmi diventa più leggibile e soprattutto eventuali conflitti vengono scoperti a tempo di compilazione.

Le classi e interfacce del JCF si dividono in due gerarchie:

  • La gerarhia che parte dall’interfaccia Collection:

    La classe Collection
  • La gerarchia che si sviluppa a partire dall’interfaccia Map:

    La classe Map

I metodi della classe Collection

La classe Collection estende Iterable, di conseguenza contiene un metodo che consente di creare un iteratore per poter scorrere la collezione. Collection rappresenta un insieme di oggetti, il cui parametro di tipo ne indica il tipo. Questa classe fornisce alcuni metodi di utilità generale che verranno ereditati da tutte le sue sottoclassi. Tra questi troviamo:

  • Il metodo size:

      int size()

    Questo metodo restituisce il numero di elementi della collezione;

  • Il metodo isEmpty:
      boolean isEmpty()

    Questo metodo restituisce true solo se la collezione è vuota, false altrimenti;

  • Il metodo contains:
      boolean contains(Object obj)

    Questo metodo restituisce true se la collezione contiene obj (il confronto viene fatto con equals)

  • Il metodo add:
      boolean add(Object other)

    Questo metodo aggiunge un oggetto other alla collezione. Restituisce true se l’elemento è stato inserito nella collezione con successo;

  • Il metodo remove:
      boolean remove(Object o)

    Questo metodo rimuove l’oggetto x dalla collezione se presente. Restituisce true se l’elemento è stato trovato.

Per un riferimento completo di Collection fate sempre riferimento alla documentazione ufficiale di Oracle.

Per poter facilitare l’implementazione delle collezioni sono state introdotte delle sottoclassi come List, Set e Queue. Queste classi forniscono i metodi fondamentali per le implementazioni delle classi concrete.


Gli algoritmi di Collections

La JFC offre anche una serie di algoritmi applicabili a diverse sottoclassi, ad esempio consente di trovare il massimo elemento di una qualsiasi classe che estende Collections e che implementi l’interfaccia Comparable:

  public static T max(Collection c) {
    if (c.isEmpty()) throw new NoSuchElementException();
    Iterator iter = c.iterator();
    T largest = iter.next();
    while (iter.hasNext()) {
      T next = iter.next();
      if (largest.compareTo(next) < 0)
        largest = next;
      }
    return largest;
  }

Un metodo statico che consente di ordinare gli elementi. Il metodo sort richiede che l’oggetto su cui è applicato implementi l’interfaccia Comparable, oppure di specificare un proprio Comparator. La classe offre anche il metodo reverseOrder che consente di invertire gli elementi della collezione, oppure l’algoritmo “shuffle” che distribuisce in maniera random gli elementi di una lista, basandosi su un generatore di numeri casuali.
Infine, la classe Collections mette a disposizione anche un metodo di ricerca basato sulla ricerca binaria di un elemento, che presuppone che gli elementi siano ordinati. Al metodo binarySearch può anche essere passato il comparatore con cui si è ordinata la classe.

Indice Lezione PrecedenteLezione Successiva

Pubblicato in Collezioni, Guide, Java, Programmazione Taggato con: , , , , ,

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

*