Vedremo come utilizzare le liste concatenate grazie alle Collection che Java mette a disposizione risparmiando tempo e fatica!
Dopo aver visto in Liste Parte I, Liste Parte II e Liste Parte III come creare manualmente una struttura dati, nello specifico le liste, spiegheremo ora le fantastiche funzionalità delle collezioni che il java mette a dispozione.
Il framework delle collezioni java permette di utilizzre strutture dati già pronte insieme agli algoritmi necessari per operarvi.
I programmatori possono così utilizzare le strutture dati senza preoccupazioni su come implementarle.
Le collezioni sono standardizzate quindi posso essere facilmente condivise dalle applicazioni.
Classi e interfacce del framework collection sono contenute nel package java.util che dovrà essere quindi incluso nei nostri file.java.
Possiamo definire una collezione come una struttura dati che può contenere riferimenti ad altri oggetti.
Le interfacce dichiarano le operazioni che possono essere eseguite con ogni collezione.
Una List è dunque una collezione ordinata che può contenere oggetti duplicati, l’indice iniziale del primo elemento di una List è zero.
L’interfaccia List è implementata in varie classi, noi vedremo nel seguito la classe LinkedList.
Il programma seguente crea due LinkedList contenenti parole ed effettua alcune operazioni elementari
Il file è salvato come TestaListaColl.java
import java.util.List;
import java.util.LinkedList;
import java.util.ListIterator;
public class TestaListaColl
{
private static final String parole[] = { “ciao”, “a tutti”,
“benvenuti”, “in”, “techfree”, “lady_inf” };
private static final String parole2[] = { “vedremo”, “come”,
“utilizzare”, “le”, “collection”, “java” };
// imposta gli oggetti LinkedList
public TestaListaColl()
{
List< String > lista1 = new LinkedList< String >();
List< String > lista2 = new LinkedList< String >();
// aggiunge elementi alla lista1
for ( String parola : parole )
lista1.add( parola );
// aggiunge elementi alla lista2
for ( String parola : parole2 )
lista2.add( parola );
// concatenare le due liste, aggiunge cioè la lista2 in coda alla lista1
lista1.addAll( lista2 );
lista2 = null; // rilascia le risorse occupate da lista2
stampaContenutoLista( lista1 ); // stampa gli elementi della lista1
convertiInMaiuscolo( lista1 ); // converte tutti gli elementi in lettere maiuscole
stampaContenutoLista( lista1 ); // stampa gli elementi di lista1
System.out.print( “\\nEliminazione delle parole dalla 4 alla 6…” );
rimuoviParole( lista1, 4, 7 ); // rimuove gli elementi 4-7 dalla lista (il primo elemento è zero!)
stampaContenutoLista( lista1 ); // print list1 elements
stampa_a_rovescio( lista1 ); // stampa la lista in ordine inverso
}
// stampa il contenuto della lista
public void stampaContenutoLista( List< String > lista )
{
System.out.println( “\\nlista: ” );
for ( String parola : lista )
System.out.printf( “%s “, parola );
System.out.println();
}
// individua le strinche nella lista e le converte in maiuscolo
private void convertiInMaiuscolo( List< String > lista )
{
ListIterator< String > iterator = lista.listIterator();
while ( iterator.hasNext() )
{
String parola = iterator.next(); // prendi l’elemento
iterator.set( parola.toUpperCase() ); // convertilo in maiuscolo
}
}
private void rimuoviParole( List< String > lista, int inizio, int fine )
{
lista.subList( inizio, fine ).clear(); // rimuove gli elementi nell’intervallo indicato
}
// stampa la lista in ordine inverso
private void stampa_a_rovescio( List< String > lista )
{
ListIterator< String > iterator = lista.listIterator( lista.size() );
System.out.println( “\\nLista in ordine inverso:” );
while ( iterator.hasPrevious() )
System.out.printf( “%s “, iterator.previous() );
}
public static void main( String args[] )
{
new TestaListaColl();
}
}
Compliare ed eseguire per vederne le funzionalita’
🙂