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.
🙂