uoc.ei.tads
Class DiccionarioAVLImpl<C,E>

java.lang.Object
  extended by uoc.ei.tads.DiccionarioAVLImpl<C,E>
All Implemented Interfaces:
java.io.Serializable, Contenedor<E>, Diccionario<C,E>

public class DiccionarioAVLImpl<C,E>
extends java.lang.Object
implements Diccionario<C,E>

Clase que implementa las operaciones de un diccionario por delegación en un arbol binario AVL. Los diccionarios son estructuras que almacenan elementos con una clave asociada. La clave debe disponer de una operación de igualdad. En el caso de los diccionarios ordenados debe permitir la ordenación total entre claves. Algunas implementaciones permiten claves repetidas y otras no. El elemento asociado a la clave puede ser cualquier objeto. En esta implementación se utilizan elementos de la clase ClaveValor, que empareja la clave y el valor asociado. Si no hay comparador específico se utilitza ClaveValorComparable que implementa la interfaz java.lang.Comparable, por delegación en la clave.

See Also:
ClaveValor, Serialized Form

Field Summary
protected  ArbolAVL<ClaveValor<C,E>> avl
          Arbol binario AVL que implementa las operaciones por delegación.
 
Constructor Summary
DiccionarioAVLImpl()
          Constructor sin parámetros.
DiccionarioAVLImpl(java.util.Comparator<ClaveValor<C,E>> comparador)
          Constructor con un parámetro y elementos de una clase comparable con el comparador dado.
 
Method Summary
 E borrar(C clave)
          Borra la primera clave coincidente y el elemento asociado, si se puede.
 Iterador<C> claves()
          Accesor de lectura de los elementos que hay en el contenedor.
 E consultar(C clave)
          Accesor de lectura del elemento asociado con una clave.
 Iterador<E> elementos()
          Accesor de lectura de los elementos que hay en el contenedor.
 boolean esta(C clave)
          Comprueba si hay un elemento con una determinada clave.
 boolean estaVacio()
          Método para comprobar si el contenedor está vacío.
 void insertar(C clave, E elem)
          Añade un elemento con una clave asociada, si se puede.
 int numElems()
          Accesor de lectura del número de elementos que hay en el contenedor.
 java.lang.String toString()
          Método que sobrescribe Object.toString().
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

avl

protected ArbolAVL<ClaveValor<C,E>> avl
Arbol binario AVL que implementa las operaciones por delegación.

Constructor Detail

DiccionarioAVLImpl

public DiccionarioAVLImpl()
Constructor sin parámetros. Se espera que las clases de los elementos implementen la interfaz java.lang.Comparable.


DiccionarioAVLImpl

public DiccionarioAVLImpl(java.util.Comparator<ClaveValor<C,E>> comparador)
                   throws ExcepcionParametroIncorrecto
Constructor con un parámetro y elementos de una clase comparable con el comparador dado.

Parameters:
comparador - comparador que permite deducir la prioridad
Throws:
ExcepcionParametroIncorrecto - si el comparador es null
Method Detail

numElems

public int numElems()
Accesor de lectura del número de elementos que hay en el contenedor.

Specified by:
numElems in interface Contenedor<E>
Returns:
número de elementos que contiene actualmente

estaVacio

public boolean estaVacio()
Método para comprobar si el contenedor está vacío.

Specified by:
estaVacio in interface Contenedor<E>
Returns:
cierto o falso, según si está vacío o no lo está

insertar

public void insertar(C clave,
                     E elem)
Añade un elemento con una clave asociada, si se puede. Si encuentra un elemento con la misma clave lo sobrescribe.

Specified by:
insertar in interface Diccionario<C,E>
Parameters:
clave - clave asociada al elemento que se quiere añadir
elem - elemento que se quiere añadir al diccionario
See Also:
ClaveValor

esta

public boolean esta(C clave)
Comprueba si hay un elemento con una determinada clave.

Specified by:
esta in interface Diccionario<C,E>
Parameters:
clave - clave asociada a un elemento
Returns:
cierto o falso, según si encuentra o no encuentra la clave

consultar

public E consultar(C clave)
Accesor de lectura del elemento asociado con una clave.

Specified by:
consultar in interface Diccionario<C,E>
Parameters:
clave - clave de referencia
Returns:
elemento asociado con la clave; o null, si no era
See Also:
ClaveValor

borrar

public E borrar(C clave)
Borra la primera clave coincidente y el elemento asociado, si se puede.

Specified by:
borrar in interface Diccionario<C,E>
Parameters:
clave - clave de referencia
Returns:
elemento borrado asociado con la clave; o null, si no era
See Also:
ClaveValor

claves

public Iterador<C> claves()
Accesor de lectura de los elementos que hay en el contenedor. Retorna una enumeración. Enumerar es simplemente enunciar la una detrás la otra (las cosas de una serie, las partes de un todo). Pero si el contenedor tiene definido algún tipo de ordenación o de recorrido, la enumeración debe ser consecuente y ofrecer los elementos por orden (FIFO, LIFO, inordre, etc.), sin alterar el estado actual del contenedor.

Specified by:
claves in interface Diccionario<C,E>
Returns:
enumeración de las claves del contenedor ordenadas
Throws:
ExcepcionPosicionInvalida - si se quiere obtener el siguiente elemento de la enumeración y éste no existe
See Also:
Iterador.haySiguiente(), Iterador.siguiente()

elementos

public Iterador<E> elementos()
Accesor de lectura de los elementos que hay en el contenedor. Retorna una enumeración. Enumerar es simplemente enunciar la una detrás la otra (las cosas de una serie, las partes de un todo). Pero si el contenedor tiene definido algún tipo de ordenación o de recorrido, la enumeración debe ser consecuente y ofrecer los elementos por orden (FIFO, LIFO, inordre, etc.), sin alterar el estado actual del contenedor.

Specified by:
elementos in interface Contenedor<E>
Returns:
enumeración de los elementos asociados con las claves
Throws:
ExcepcionPosicionInvalida - si se quiere obtener el siguiente elemento de la enumeración y no hay ningún o no hay ningún más
See Also:
Iterador.haySiguiente(), Iterador.siguiente()

toString

public java.lang.String toString()
Método que sobrescribe Object.toString(). Separa una par de la siguiente con el salto de línea de la plataforma.

Overrides:
toString in class java.lang.Object