LIA - DEIS - Facoltà di Ingegneria - Università di Bologna
Fondamenti di Informatica A - II° Modulo
Corso di laurea in Ing. Informatica (A-E) ed Elettrica - A. A. 2000-2001

Esercizio di trattamento Liste


Aggiungere alla classe DoubleList un metodo: public void stampa().
Il metodo stampi a video il contenuto di tutti gli elementi della lista il cui oggetto x non comincia per "T".

 

class DListNode {

protected A item; protected DListNode next; protected DListNode prev;

public DListNode(A o) { item = o; next = null; prev = null; }
public DListNode getPrev() { return prev; }
public void setPrev(DListNode prev) { this.prev = prev; }
public DListNode getNext() { return next; }
public void setNext(DListNode next) { this.next = next; }
public A getItem() { return item; }
public double value() { return Math.random();
}

}

public class DoubleList
{

protected int size;protected DListNode first, last;

public DoubleList() { size = 0; first = last = null; }


public void insert(Object o) {
DListNode node = new DListNode(o);
node.setNext(first); node.setPrev(null);
if (first!=null) first.setPrev(node);
first = node;
if(last==null) last = node; size++; }

}

class A {

String x; int[] y; JButton z;

public String toString() { System.out.println("Contenuto: "+x+y+z); return (x+y+z);}

}


Si noti la implementazione della toString per la classe A. Essa consente di ottenere sia una indicazione sull'output e anche di restituire una stringa, il cui inizio coincide con la stringa che costituisce il contenuto di x.
Gli altri campi (trasformati in stringa) vengono inseriti subito dopo.

Quindi se chiediamo il metodo toString ad una istanza, otteniamo la stringa, come primo componente.

(se poi vogliamo anche considerare la visibilità della classe A, possiamo anche pensare che sia nello stesso package delle altre, e con visibilità package).

Il metodo stampa consiste di una esplorazione della lista (considerando i diversi nodi, uno dopo l'altro) e considerando per la stampa solo i nodi che soddisfano la condizione richiesta.

 

public void stampa{

DlistNode temp = first;

while (temp != null)

{
if temp.getItem (). toString(). CharAT(0) != 'T')
System.out.println (temp.getItem ()); temp = temp.next;
}

}