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