Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Ejemplo de uso del TAD Lista
public static int sumar (Lista<Integer>lis){
int contador =0;
Iterator<Integer>itr =lis.iterator();
while (itr.hasNext())
contador+=itr.next();
return contador;
}
public static int sumar (Lista <Integer>lis){
int contador =0;
for (Integer i: lis)
contador+=i;
return contador;
}
public interface Iterator<E>
public E next();
public boolean hasNext();
public E remove();
AEDI I.T. Informtica de Gestin Curso 09/10
TAD Lista
Problema: Iterador muy simple, solo permite avanzar
actual y recuperar en actual.
Si queremos incorporar ms operaciones sobre la
posicin actual de la lista en la que nos encontramos, por
ejemplo, insertar delante de actual, despus de actual,
retroceder actual, modificar el elemento actual, etc, hay
que extender o derivar el iterador, incorporando nuevas
operaciones.
public interface IteradorLista<E>extends Iterator<E>
En el TAD Lista se va a especificar una operacin
iteradorLista() que devuelve un iterador enriquecido
que permite la actualizacin de la secuencia.
AEDI I.T. Informtica de Gestin Curso 09/10
TAD Lista
public class Lista<E> extends Iterable<E>{
public Lista<E> ( )
// Produce: una lista vaca
public int tamao()
// Produce: devuelve el nmero de elementos de la lista
public boolean esVacio()
// Produce: cierto si la lista est vaca. Falso en otro caso
public boolean contiene (E elemento)
// Produce: cierto si la lista contiene el elemento especificado, falso en caso contrario
public E recuperar() throws ListaVaciaExcepcion
// Produce: si la lista est vaca, lanza la excepcin ListaVaciaExcepcin,
// en otro caso devuelve un elemento cualquiera de la lista
public void insertar (E elemento);
// Modifica: this
// Produce: aade un elemento al final de la secuencia
public boolean suprimir (E elemento);
// Modifica: this
// Produce: cierto si elimina el una ocurrencia del elemento de la secuencia,
// falso en caso contrario
public IteradorLista<E> iteradorLista();
// Necesita: this no debe modificarse mientras IteradorLista est en uso
// Produce: un iterador enriquecido sobre los elementos de this
}
AEDI I.T. Informtica de Gestin Curso 09/10
TAD Lista
Los mtodos que se han incorporado en la clase
iteradora, a modo de ejemplo son: modificar actual e
insertar despus de actual:
public interface IteradorLista<E>extends Iterator<E>{
public void modificar (E elemento) throws NoSuchElementException;
//Modifica: this
//Produce: si actual no es de la secuencia lanza la excepcin NoSuchElementException,
// sino reemplaza el elemento situado en la posicin actual por elemento
public void insertarAntes (E elemento);
// Modifica: this
// Produce: elemento se inserta inmediatamente antes del elemento que sera devuelto por next.
Si la lista est vaca, el nuevo elemento es el nico elemento de la lista.
}
AEDI I.T. Informtica de Gestin Curso 09/10
TAD Lista
public interface Iterator<E>
public E next();
public boolean hasNext();
public E remove();
public interface Iterable<E>
public Iterator<E> iterator();
public interface Lista<E> extends Iterable<E> {
public boolean esVacio();
public int tamao();
public boolean contiene (E elemento);
public void insertar (E elemento);
public boolean suprimir (E elemento);
public IteradorLista<E> iteradorLista();
public interface IteradorLista<E> extends Iterator<E>{
public void modificar (E elemento);
public void insertarAntes (E elemento);
J
a
v
a
J
a
v
a