Java: Come creare una Lista. Parte I

Come creare una lista Java di interi in java aggiungendo elementi in testa e in coda.

Vedremo come creare una classe auto-referenziale NodoLista; le classi auto-referenziali contengono un’istanza che si riferisce a un oggetto della stessa classe.

Il file verrà salvato con il nome NodoLista.java

/***************************************************************
* La classe NodoLista dichiara i campi dato e nextNodo. *
* Il campo dato è un intero, il membro nextNodo di tipo * 
* NodoLista memorizza un riferimento al successivo oggetto *
* NodoLista nella lista Java concatenata (o null se il nodo è *
* l'ultimo elemento della lista. *
******************************************************************/
// La classe rappresenta un nodo della lista Java
public class NodoLista {
int dato;
NodoLista nextNodo; //riferimento al successivo nodo collegato
//costruttore che crea un NodoLista e che fa riferimento ad un int
public NodoLista(int info) {
this(info, null);
} //fine costruttore con un argomento
/* costruttore che crea un NodoLista che fa riferimento a un int e al
* successivo NodoLista */
public NodoLista(int info, NodoLista nodo) {
dato = info;
nextNodo = nodo;
} //fine costruttore con due argomenti
//ritorna un riferimento al dato nel nodo
int getdato() {
return dato; //ritorna l'oggetto contenuto nel nodo
}
//ritorna un riferimento al prossimo nodo della lista
NodoLista getNext() {
return nextNodo; //ottiene il prossimo nodo
}
} //fine classe NodoLista

Definiremo ora una classe Lista in grado di implementare i metodi per nominare la lista con una stringa e inserire un intero in testa e in coda alla struttura dati.

Il file verrà salvato come Lista.java

// Definizione della classe Lista
public class Lista {
private NodoLista primoNodo;
private NodoLista ultimoNodo;
private String nome; // stringa tipo "listaA" usata nei futuri messaggi di stampa
//costruttore che crea una lista Java vuota con "list" come nome
public Lista() {
this("list");
}
//costruttore che crea una lista Java vuota con un nome
public Lista(String nomelista) {
nome = nomelista;
primoNodo = ultimoNodo = null;
}
//Inserisce un int all'inizio della lista Java
public void inserisciInTesta(int elemento) {
if(isEmpty()) // primoNodo e ultimoNodo puntano allo stesso oggetto
primoNodo = ultimoNodo = new NodoLista(elemento, primoNodo);
else // primoNodo punta a un nuovo nodo
primoNodo = new NodoLista(elemento, primoNodo);
}
//Inserisce un int alla fine della lista Java
public void inserisciInCoda(int elemento) {
if(isEmpty()) //primoNodo e ultimoNodo puntano allo stesso oggetto
primoNodo = ultimoNodo = new NodoLista(elemento);
else //il campo nextNodo di ultimoNodo punta al nuovo nodo
ultimoNodo = ultimoNodo.nextNodo = new NodoLista(elemento);
}
//Determina se la lista Java è vuota
public boolean isEmpty() {
return primoNodo == null; //ritorna true se la lista è vuota
}
}

Infine testiamo la nostra lista Java, implementiamo a questo scopo la classe TestaLista che conterrà il main in grado di inserire gli interi.

Il file verrà salvato come TestaLista.java

**************************************************************************
* Il metodo main della classe TestaLista crea una lista di oggetti, *
* inserisce degli oggetti all'inizio della lista usando il metodo *
* inserisciInTesta, inserisce degli oggetti alla fine della lista *
* usando il metodo inserisciInCoda. *
*************************************************************************/
//Classe TestaLista che collauda le funzionalità di Lista.
public class TestaLista {
public static void main(String args[]) {
Lista lista = new Lista(); //crea il contenitore lista Java
//inserisce degli interi nella lista
lista.inserisciInTesta(-1);
lista.inserisciInTesta(0);
lista.inserisciInCoda(1);
lista.inserisciInCoda(5);
lista.inserisciInTesta(6);
}//fine main
}//fine classe

Sarà sufficiente compilare ed eseguire TestaLista.java per implementare la struttura dati.

Vedremo successivamente come stampare a video il contenuto della lista Java.

🙂

Please follow and like us:

Secured By miniOrange