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

java.lang.Object
  extended by uoc.ei.tads.DiccionariAVLImpl<C,E>
All Implemented Interfaces:
java.io.Serializable, Contenidor<E>, Diccionari<C,E>

public class DiccionariAVLImpl<C,E>
extends java.lang.Object
implements Diccionari<C,E>

Classe que implementa les operacions d'un diccionari per delegació en un arbre binari AVL. Els diccionaris són estructures que emmagatzemen elements amb una clau associada. La clau ha de disposar d'una operació d'igualtat. En el cas dels diccionaris ordenats ha de permetre l'ordenació total entre claus. Algunes implementacions permeten claus repetides i altres no. L'element associat a la clau pot ser qualsevol objecte. En aquesta implementació s'utilitzen elements de la classe ClauValor, que emparella la clau i el valor associat. Si no hi ha comparador específic s'utilitza ClauValorComparable que implementa la interfície java.lang.Comparable, per delegació en la clau.

Since:
1.5
See Also:
ClauValor, Serialized Form

Field Summary
protected  ArbreAVL<ClauValor<C,E>> avl
          Arbre binari AVL que implementa les operacions per delegació.
 
Constructor Summary
DiccionariAVLImpl()
          Constructor sense paràmetres.
DiccionariAVLImpl(java.util.Comparator<ClauValor<C,E>> comparador)
          Constructor amb un paràmetre i elements d'una classe comparable amb el comparador donat.
 
Method Summary
 void afegir(C clau, E elem)
          Afegeix un element amb una clau associada, si es pot.
 Iterador<C> claus()
          Accessor de lectura dels elements que hi ha al contenidor.
 E consultar(C clau)
          Accesor de lectura de l'element associat amb una clau.
 Iterador<E> elements()
          Accessor de lectura dels elements que hi ha al contenidor.
 E esborrar(C clau)
          Esborra la primera clau coincident i l'element associat, si es pot.
 boolean estaBuit()
          Mètode per a comprovar si el contenidor està buit.
 boolean hiEs(C clau)
          Comprova si hi ha un element amb una determinada clau.
 int nombreElems()
          Accessor de lectura del nombre d'elements que hi ha al contenidor.
 java.lang.String toString()
          Mètode que sobreescriu Object.toString().
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

avl

protected ArbreAVL<ClauValor<C,E>> avl
Arbre binari AVL que implementa les operacions per delegació.

Constructor Detail

DiccionariAVLImpl

public DiccionariAVLImpl()
Constructor sense paràmetres. S'espera que les classes dels elements implementin la interfície java.lang.Comparable.


DiccionariAVLImpl

public DiccionariAVLImpl(java.util.Comparator<ClauValor<C,E>> comparador)
                  throws ExcepcioParametreIncorrecte
Constructor amb un paràmetre i elements d'una classe comparable amb el comparador donat.

Parameters:
comparador - comparador que permet deduir la prioritat
Throws:
ExcepcioParametreIncorrecte - si el comparador és null
Method Detail

nombreElems

public int nombreElems()
Accessor de lectura del nombre d'elements que hi ha al contenidor.

Specified by:
nombreElems in interface Contenidor<E>
Returns:
nombre d'elements que conté actualment

estaBuit

public boolean estaBuit()
Mètode per a comprovar si el contenidor està buit.

Specified by:
estaBuit in interface Contenidor<E>
Returns:
cert o fals, segons si està buit o no ho està

afegir

public void afegir(C clau,
                   E elem)
Afegeix un element amb una clau associada, si es pot. Si troba un element amb la mateixa clau el sobreescriu.

Specified by:
afegir in interface Diccionari<C,E>
Parameters:
clau - clau associada a l'element que es vol afegir
elem - element que es vol afegir al diccionari
See Also:
ClauValor

hiEs

public boolean hiEs(C clau)
Comprova si hi ha un element amb una determinada clau.

Specified by:
hiEs in interface Diccionari<C,E>
Parameters:
clau - clau associada a un element
Returns:
cert o fals, segons si troba o no troba la clau

consultar

public E consultar(C clau)
Accesor de lectura de l'element associat amb una clau.

Specified by:
consultar in interface Diccionari<C,E>
Parameters:
clau - clau de referència
Returns:
element associat amb la clau; o null, si no hi era
See Also:
ClauValor

esborrar

public E esborrar(C clau)
Esborra la primera clau coincident i l'element associat, si es pot.

Specified by:
esborrar in interface Diccionari<C,E>
Parameters:
clau - clau de referència
Returns:
element esborrat associat amb la clau; o null, si no hi era
See Also:
ClauValor

claus

public Iterador<C> claus()
Accessor de lectura dels elements que hi ha al contenidor. Retorna una enumeració. Es pot obtenir un llistat amb un parell de línies de codi:
 for ( Iterador it = tad.elements(); it.hiHaSeguent(); )
    System.out.println(it.seguent()); 
Enumerar és simplement enunciar l'una darrere l'altra (les coses d'una sèrie, les parts d'un tot). Però si el contenidor té definit algun tipus d'ordenació o de recorregut, l'enumeració ha de ser conseqüent i oferir els elements per ordre (FIFO, LIFO, inordre, etc.), sense alterar l'estat actual del contenidor.

Specified by:
claus in interface Diccionari<C,E>
Returns:
enumeració de les claus del contenidor ordenades
Throws:
ExcepcioPosicioInvalida - si es vol obtenir el següent element de l'enumeració i no n'hi ha cap o no n'hi ha cap més
See Also:
Iterador.hiHaSeguent(), Iterador.seguent()

elements

public Iterador<E> elements()
Accessor de lectura dels elements que hi ha al contenidor. Retorna una enumeració. Es pot obtenir un llistat amb un parell de línies de codi:
 for ( Iterador it = tad.elements(); it.hiHaSeguent(); )
    System.out.println(it.seguent()); 
Enumerar és simplement enunciar l'una darrere l'altra (les coses d'una sèrie, les parts d'un tot). Però si el contenidor té definit algun tipus d'ordenació o de recorregut, l'enumeració ha de ser conseqüent i oferir els elements per ordre (FIFO, LIFO, inordre, etc.), sense alterar l'estat actual del contenidor.

Specified by:
elements in interface Contenidor<E>
Returns:
enumeració dels elements associats amb les claus
Throws:
ExcepcioPosicioInvalida - si es vol obtenir el següent element de l'enumeració i no n'hi ha cap o no n'hi ha cap més
See Also:
Iterador.hiHaSeguent(), Iterador.seguent()

toString

public java.lang.String toString()
Mètode que sobreescriu Object.toString(). Treu parelles d'elements. Separa una parella de la següent amb el salt de línia de la plataforma.

Overrides:
toString in class java.lang.Object
Returns:
llistat de claus (entre claudàtors) seguides de l'element associat a cada clau