Interfaccia List in Java
- L'interfaccia
List
estendeCollection
e definisce il comportamento di una collezione che memorizza una sequenza di elementi. - Gli elementi possono essere inseriti o acceduti tramite la loro posizione nella lista, usando un indice basato su zero.
- Una lista può contenere elementi duplicati e fornisce metodi specifici per la gestione degli indici.
- I metodi principali includono
add()
,get()
,remove()
,indexOf()
,lastIndexOf()
, esubList()
.
L'interfaccia List
L'interfaccia List
estende Collection
e dichiara il comportamento di una collezione che memorizza una sequenza di elementi.
Gli elementi possono essere inseriti o acceduti tramite la loro posizione nella lista, usando un indice basato su zero. Una lista può contenere elementi duplicati.
List
è un'interfaccia generica che ha questa dichiarazione:
interface List<E> extends Collection<E>
Qui, E
specifica il tipo di oggetti che la lista conterrà.
Oltre ai metodi definiti da Collection
, List
definisce alcuni metodi propri, che sono riassunti nella Tabella sottostante:
Metodo | Descrizione |
---|---|
void add(int indice, E ogg) |
Inserisce ogg nella lista invocante all'indice passato in indice. Tutti gli elementi preesistenti al punto di inserimento o oltre vengono spostati in alto. Quindi, nessun elemento viene sovrascritto. |
boolean addAll(int indice, Collection<? extends E> c) |
Inserisce tutti gli elementi di c nella lista invocante all'indice passato in indice . Tutti gli elementi preesistenti al punto di inserimento o oltre vengono spostati in alto. Quindi, nessun elemento viene sovrascritto. Restituisce true se la lista invocante cambia e restituisce false altrimenti. |
static List<E> copyOf(Collection<? extends E> sorgente) |
Restituisce una lista che contiene gli stessi elementi di quella specificata da sorgente . La lista restituita è non modificabile e basata su valori. I valori null non sono consentiti. |
E get(int indice) |
Restituisce l'oggetto memorizzato all'indice specificato nella collezione invocante. |
int indexOf(Object ogg) |
Restituisce l'indice della prima istanza di ogg nella lista invocante. Se ogg non è un elemento della lista, viene restituito –1 . |
int lastIndexOf(Object ogg) |
Restituisce l'indice dell'ultima istanza di ogg nella lista invocante. Se ogg non è un elemento della lista, viene restituito –1 . |
ListIterator<E> listIterator() |
Restituisce un iteratore all'inizio della lista invocante. |
ListIterator<E> listIterator(int indice) |
Restituisce un iteratore alla lista invocante che inizia all'indice specificato. |
static List<E> of(E... elementi) |
Crea una lista non modificabile basata su valori contenente gli elementi specificati in lista-parametri. Gli elementi null non sono consentiti. Sono fornite molte versioni sovraccaricate. Vedi la discussione nel testo per i dettagli. |
E remove(int indice) |
Rimuove l'elemento alla posizione indice dalla lista invocante e restituisce l'elemento eliminato. La lista risultante viene compattata. Cioè, gli indici degli elementi successivi vengono decrementati di uno. |
default void replaceAll(UnaryOperator<E> opDaApplicare) |
Aggiorna ogni elemento nella lista con il valore ottenuto dalla funzione opDaApplicare . |
E set(int indice, E ogg) |
Assegna ogg alla posizione specificata da indice nella lista invocante. Restituisce il valore precedente. |
default void sort(Comparator<? super E> comp) |
Ordina la lista usando il comparatore specificato da comp . |
List<E> subList(int inizio, int fine) |
Restituisce una lista che include gli elementi da inizio a fine–1 nella lista invocante. Gli elementi nella lista restituita sono anche referenziati dall'oggetto invocante. |
Si noti che molti di questi metodi genereranno un'UnsupportedOperationException
se la lista non può essere modificata, e una ClassCastException
viene generata quando un oggetto è incompatibile con un altro, come quando si tenta di aggiungere un oggetto incompatibile a una lista.
Inoltre, molti metodi genereranno un'IndexOutOfBoundsException
se viene usato un indice non valido. Una NullPointerException
viene generata se si tenta di memorizzare un oggetto null
e gli elementi null
non sono consentiti nella lista. Un'IllegalArgumentException
viene generata se viene usato un argomento non valido.
Alle versioni di add()
e addAll()
definite da Collection
, List
aggiunge i metodi add(int, E)
e addAll(int, Collection)
. Questi metodi inseriscono elementi all'indice specificato. Inoltre, la semantica di add(E)
e addAll(Collection)
definiti da Collection
viene modificata da List
in modo che aggiungano elementi alla fine della lista. Si può modificare ogni elemento nella collezione usando replaceAll()
.
Per ottenere l'oggetto memorizzato in una posizione specifica, si può chiamare get()
con l'indice dell'oggetto. Per assegnare un valore a un elemento nella lista, si può chiamare set()
, specificando l'indice dell'oggetto da modificare. Per trovare l'indice di un oggetto, bisogna usare indexOf()
o lastIndexOf()
.
Si può ottenere una sottolista di una lista chiamando subList()
, specificando gli indici di inizio e fine della sottolista. Come si può immaginare, subList()
rende l'elaborazione delle liste molto conveniente. Un modo per ordinare una lista è con il metodo sort()
definito da List
.
A partire da JDK 9, List
include il metodo factory of()
, che ha un numero di sovraccarichi. Ogni versione restituisce una collezione non modificabile, basata su valori che è composta dagli argomenti che le vengono passati. Lo scopo principale di of()
è fornire un modo conveniente ed efficiente per creare una piccola collezione List
. Ci sono 12 sovraccarichi di of()
. Uno non prende argomenti e crea una lista vuota. È mostrato qui:
static <E> List<E> of()
Dieci sovraccarichi prendono da 1 a 10 argomenti e creano una lista che contiene gli elementi specificati. Sono mostrati qui:
static <E> List<E> of(E ogg1)
static <E> List<E> of(E ogg1, E ogg2)
static <E> List<E> of(E ogg, E ogg2, E ogg3)
...
static <E> List<E> of(E ogg1, E ogg2, E ogg3, E ogg4, E ogg5,
E ogg6, E ogg7, E ogg8, E ogg9, E ogg10)
Il sovraccarico finale di of()
specifica un parametro varargs che prende un numero arbitrario di elementi o un array di elementi. È mostrato qui:
static <E> List<E> of(E ... ogge)
Per tutte le versioni, gli elementi null
non sono consentiti. In tutti i casi, l'implementazione di List
non è specificata.