¿Cómo lidiar con relaciones no únicas en JAVA?
Todas las interfaces implementadas:
Serializable, Clonable, Mapa
Subclases conocidas directamente:
p>Propiedades, valores predeterminados de UI
------------- ----------------------- -- -------------------------------------
clase pública Hashtable
Para almacenar y recuperar objetos con éxito en una tabla hash, el objeto utilizado como clave debe implementar el método hashCode y el método igual.
Las instancias Hashtable tienen dos parámetros que afectan su rendimiento: capacidad inicial y factor de carga. La capacidad es la cantidad de depósitos en la tabla hash y la capacidad inicial es la capacidad cuando se crea la tabla hash. Es importante tener en cuenta que el estado de la tabla hash es abierto: si ocurre una "colisión hash", se almacenan varias entradas en un depósito y se deben buscar en orden. El factor de carga es una medida de qué tan llena puede estar una tabla hash antes de que su capacidad aumente automáticamente. Los parámetros capacidad inicial y factor de carga son sólo indicaciones sobre la implementación. Los detalles de cuándo y si se llama al método rehash dependen de la implementación.
En términos generales, el factor de carga predeterminado (.75) busca un compromiso entre los costos de tiempo y espacio. Un factor de carga demasiado alto reduce la sobrecarga de espacio, pero también aumenta el tiempo que lleva encontrar una entrada (esto se refleja en la mayoría de las operaciones de Hashtable, incluidas get y put).
La capacidad inicial controla el equilibrio entre el consumo de espacio y la penalización de tiempo necesaria para realizar una operación de reorganización. Si la capacidad inicial es mayor que el número máximo de entradas que la tabla hash puede contener dividido por el factor de carga, entonces la operación de reorganización nunca ocurrirá. Sin embargo, establecer una capacidad inicial demasiado alta puede desperdiciar espacio.
Si está almacenando muchas entradas en una tabla hash, puede ser más eficiente crear una tabla hash con un tamaño inicial lo suficientemente grande como para insertar entradas, en lugar de realizar una operación de reorganización automática para aumentar el tamaño. de la mesa según sea necesario.
El siguiente ejemplo crea una tabla hash numérica. out.println("two = " + n);
}
Desde el lanzamiento de la v1.2 de la plataforma Java 2, esta clase ha sido mejorada para implementar Map y así se convirtió en la parte Java del marco de la colección. A diferencia de las implementaciones de colecciones más nuevas, Hashtable es sincrónico.
Todos los iteradores devueltos por los "métodos de vista de colección" de Hashtable y el método de colecciones listIterator son rápidos: si se realizan cambios estructurales en Hashtable después de crear el iterador, el iterador fallará, y si son estructurales Si se realizan cambios en el cambio de Hashtable, el iterador también fallará. Después de crear el iterador, si la estructura de Hashtable se modifica de alguna manera en cualquier momento (excepto mediante los métodos de eliminación o adición del propio iterador), el iterador generará una excepción de modificación concurrente (ConcurrentModificationException). Las enumeraciones devueltas por los métodos de clave y valor de Hashtable no fallan rápidamente.
Tenga en cuenta que el comportamiento a prueba de fallos de los iteradores no está garantizado porque, en general, no se pueden ofrecer garantías estrictas sobre si se producirán modificaciones asincrónicas simultáneas. Por lo tanto, es un error escribir programas que se basen en esta excepción para mejorar la corrección de los iteradores: el comportamiento rápido de los iteradores solo se puede utilizar para detectar errores del programa.
Esta clase es miembro del marco de colecciones de Java.
De las siguientes versiones:
JDK 1.0
Ver también:
Object.equals(java.lang.Object), Object hashCode(), rehash(), Colección, Mapa, HashMap.TreeMap, SerializedTrue(), SerializedTrue()TreeMap, SerializedTable
----------------. -------------------------------------------------- -------------
Resumen de la función del constructor
Hashtable()
Construye una nueva tabla hash vacía, inicialización predeterminada. la capacidad es 11 y el factor de carga es 0,75.
Hashtable(int initialCapacity)
Construye una nueva tabla hash vacía utilizando la capacidad inicial especificada y el factor de carga predeterminado (0,75).
Hashtable(int inicialCapacity, float loadFactor)
Construye una nueva tabla hash vacía con la capacidad inicial y el factor de carga especificados.
Hashtable(Map extends K,? extends V> t)
Construye una nueva tabla hash con la misma relación de mapeo que el mapa dado.
Resumen del método
void clear()
Borra esta tabla hash para que no contenga ninguna clave.
Object clone()
Crea una copia superficial de esta tabla hash.
Booleano contiene (valor del objeto)
Prueba si existe una clave asociada con el valor especificado en este mapa.
Booleano contiene clave (clave de objeto)
Prueba si el objeto especificado es una clave en esta tabla hash.
Booleano containsValue(Valor del objeto)
Devuelve verdadero si esta tabla hash asigna una o más claves a este valor.
Enumeración
Devuelve una enumeración de los valores de esta tabla hash.
Set
Devuelve una vista Set de las claves contenidas en esta Hashtable.
booleano igual a (Objeto o)
Compara si el objeto especificado es igual a este Mapa, según lo definido por la interfaz del Mapa.
V get(Clave de objeto)
Devuelve el valor asignado de la clave especificada en esta tabla hash.
int hashCode()
Devuelve el valor del código hash de este Mapa definido por la interfaz del Mapa.
Booleano isEmpty()
Prueba si esta tabla hash no tiene asignación clave-valor.
Enumeración
Devuelve una enumeración de las claves en esta tabla hash.
Set
Devuelve una vista establecida de las claves contenidas en esta tabla hash.
V put(K key, V value)
Asigna la clave especificada al valor especificado en esta Hashtable.
void putAll(Map extends K,? extends V> t)
Copia todas las asignaciones del mapa especificado a esta Hashtable, reemplazando todas las claves en el mapa especificado en esta Hashtable Todos los mapeos.
protected void rehash()
Aumenta la capacidad de este Hashtable y lo reorganiza internamente para que sus elementos se puedan guardar y acceder de manera más eficiente.
V remove(Clave de objeto)
Elimina esta clave y su valor correspondiente de la tabla hash.
int size()
Devuelve el número de claves en esta tabla hash.
String toString()
Devuelve la representación de cadena de este objeto Hashtable, que es un conjunto de entradas entre paréntesis separadas por los caracteres ASCII ", " (coma y espacio).
Colección
Devuelve una vista de colección de los valores contenidos en esta Hashtable.
Métodos heredados de la clase java.lang.Object
finalizar, getClass, notificar, notificar a todos, esperar, esperar, esperar
Detalles del constructor
p>Hashtable
public Hashtable(int initialCapacity,
float loadFactor) Construye una nueva tabla hash vacía con la capacidad inicial especificada y el factor de carga especificado.
Parámetros:
initialCapacity: la capacidad inicial de la tabla hash.
loadFactor: el factor de carga de la tabla hash.
Lanza:
IllegalArgumentException: si la capacidad inicial es menor que cero o el factor de carga no es positivo.
------------------------------------------- ----- -------------------------------------
Tabla hash
public Hashtable(int initialCapacity) Construye una nueva tabla hash vacía utilizando la capacidad inicial especificada y el factor de carga predeterminado (0,75).
Parámetros:
initialCapacity: la capacidad inicial de la tabla hash.
Lanza:
IllegalArgumentException - si la capacidad inicial es menor que cero.
------------------------------------------- ----- -------------------------------------
Tabla hash
public Hashtable() construye una nueva tabla hash vacía utilizando la capacidad inicial predeterminada (11) y el factor de carga (0,75).
------------------------------------------- ----- -------------------------------------
Tabla hash
public Hashtable(Map& lt;? extends K,? extends V> t) Construye una nueva tabla hash cuya relación de mapeo es la misma que la del mapa dado. La tabla hash creada tiene una capacidad inicial lo suficientemente grande como para acomodar las asignaciones en el mapa dado y tiene un factor de carga predeterminado (0,75).
Parámetros:
t: la relación de mapeo que se almacenará en este mapa.
Lanza:
NullPointerException: si el mapa especificado es nulo.
De:
1.2
Detalles del método
tamaño
public int size() devuelve esto La clave valor en la tabla hash.
Especificador:
Tamaño en interfaz Mapa
Especificador:
Tamaño en diccionario de clase
Devuelve:
El número de claves en esta tabla hash.
----------------- -------------------------------------------------- ------------
isEmpty
public boolean isEmpty() Prueba si esta tabla hash no tiene claves asignadas a valores.
Especificador:
está vacío en la interfaz Mapa
Especificador:
está vacío en la clase Diccionario
Devuelve:
Devuelve si esta tabla hash no tiene ninguna clave asignada a valores.
------------- -------------------------------------------------- ------------------
claves
Enumeración pública
Parámetros:
Claves en el diccionario de clase
Devuelve:
Una enumeración de las claves en esta tabla hash .
Ver también:
Enumeración, elementos(), keySet(), Mapa
------------- -- ------------------------------------------------ -- ---- -----------
elementos
enumeración pública
Parámetros:
Elemento de la clase Diccionario
Devuelve:
Una enumeración de los valores de este tabla hash.
Ver también:
Enumeración, claves(), valores(), Mapa
------------- -- ------------------------------------------------ -- -------- -------
contiene
público booleano contiene (valor del objeto) Pruebe si hay un valor relacionado con el valor especificado en este tabla de mapeo Clave conectada. Esta operación es más cara que el método contieneKey.
Tenga en cuenta que este método es funcionalmente equivalente al método contieneValue, que forma parte de la interfaz Map en el marco de colecciones.
Parámetros:
valor: el valor a buscar.
Devuelve:
Devuelve verdadero si y sólo si la clave en esta tabla hash se asigna al parámetro de valor (determinado por el método igual, de lo contrario devuelve falso);
Lanza:
NullPointerException - si el valor es nulo.
Ver también:
contieneClave(Objeto), contieneValor(Objeto), Mapa
------------- -- ------------------------------------------------ -- ---- ----------
containsValue
public boolean containsValue(Valor del objeto)Devuelve verdadero si esta tabla hash asigna una o más claves a este valor.
Tenga en cuenta que este método es funcionalmente equivalente a contiene (antes de la interfaz del Mapa).
Parámetros:
contieneValor (en la interfaz Mapa
)
Parámetros:
valor: un valor cuya presencia en esta tabla hash ha sido probada.
Devuelve:
Devuelve verdadero si este mapa asigna una o más claves al valor especificado.
Lanza:
NullPointerException - si el valor es nulo.
A partir de:
1.2
Ver también:
Mapa
Mapa
Esta es la primera versión de Map.
Mapa
---------------------------------- - --------------------------------------
containsKey
público booleano contieneKey(Clave de objeto) Prueba si el objeto especificado es una clave en esta tabla hash.
Parámetros:
contieneClave en la interfaz Mapa
Parámetros:
clave - posible clave.
Devuelve:
Devuelve verdadero si y sólo si el objeto especificado (determinado por el método igual) es una clave en esta tabla hash; de lo contrario, devuelve falso;
Ver también:
contiene(Objeto)
--------------------- - -------------------------------------------------- --------
get
public V get(Clave de objeto) Devuelve el valor de mapeo de la clave especificada en esta tabla hash.
Especificador:
obtener en el mapa de interfaz
Especificador:
obtener en el diccionario de clase
Parámetros:
clave: la clave en la tabla hash.
Devuelve:
El valor asignado a esta clave en esta tabla hash, o nulo si la clave no se asigna a ningún valor en esta tabla hash.
Lanza:
NullPointerException: si la clave es nula.
Ver también:
put(Objeto, Objeto)
----------------- -- ------------------------------------------------ -- ---------
rehash
protected void rehash() aumentará la capacidad de esta tabla hash y la reorganizará internamente para hacerla más eficiente Guarde y acceda a su elementos. Este método se llama automáticamente cuando la cantidad de claves en la tabla hash excede la capacidad y el factor de carga de la tabla hash.
------------------------------------------- ----- -------------------------------------
poner
public V put(K key,
V value) Asigna la clave especificada al valor especificado en esta tabla hash. Ni la clave ni el valor pueden estar vacíos.
El método get se puede llamar con la misma clave que la clave original para obtener el valor correspondiente.
Especificador:
poner en la interfaz Mapa
Especificador:
poner en la clase Diccionario
Parámetros:
key - La clave de la tabla hash.
valor - valor.
Devuelve:
El valor anterior de la clave especificada en esta tabla hash, o nulo si el valor no existe.
Lanza:
NullPointerException: si la clave o el valor es nulo.
Ver también:
Objeto.equals(objeto), get(objeto)
------------- -- ------------------------------------------------ -- --------------
remove
Public V remove(Clave de objeto) Elimina la clave y su valor correspondiente de la tabla hash. Si la clave no está en la tabla hash, este método no hace nada.
Parámetros:
eliminar en la interfaz Mapa
Especificador:
eliminar en la clase Diccionario
Parámetros:
clave: la clave para eliminar.
Devuelve:
El valor en esta tabla hash que está asignado a esta clave, o nulo si la clave no está asignada.
Lanza:
NullPointerException: si la clave es nula.
--------------------- --------------------- - ------------------------------------
ponerTodo
public void putAll(Map extends K,? extends V> t) Copia todas las asignaciones en el mapa especificado a esta Hashtable, reemplazando todas las asignaciones de todas las claves en el mapa especificado actual en esta Hashtable.
Especificador:
putAll en el mapa de interfaz
Parámetros:
t - se almacenará en este mapeo de mapa relación.
Lanza:
NullPointerException: si el mapa especificado es nulo.
De la versión:
1.2
------------------------ - ---------------------- ---------------------------- ------
clear
public void clear() Borra esta tabla hash para que no contenga ninguna clave.
Descripción:
Borrar
-------------------------- -------------------------------------------------- ----
En la interfaz Mapa
clone
public Object clone() Crea una copia superficial de esta tabla hash. Copia toda la estructura de la propia tabla hash, pero no clona sus claves ni valores. Esta es una operación relativamente costosa.
Anulaciones:
clon en clase de objeto
Devuelve:
Un clon de la tabla hash.
Ver también:
Clonable
------------------------ - -------------------------------------------------- -----
toString
public String toString() Devuelve la representación de cadena de este objeto Hashtable, es decir, un conjunto de caracteres ASCII ", " (coma más espacio) Entradas encerradas entre paréntesis delimitados. Cada entrada se representa de la siguiente manera: clave, signo igual = y elemento asociado, donde se usa el método toString para convertir la clave y el elemento en una cadena.
Anula el método toString del objeto.
Anulaciones:
El método toString en la clase Objeto
Devuelve:
La representación de cadena de esta tabla hash.
------------------------------------------- -- -------------------------------------
Conjunto de claves
public Set Los conjuntos están respaldados por Hashtables, por lo que los cambios en Hashtable se reflejan en el conjunto y viceversa. Set admite eliminar elementos (elimina la entrada correspondiente de Hashtable), pero no agregar elementos. Especificador: keySet en el mapa de interfaz Devuelve: Una vista configurada de las claves contenidas en este mapa. De la versión: 1.2 --------------------- -- ------------------------------------------------ -- ------ entrySet public Set Especificador: entrySet Contiene el mapeo en este mapa en la interfaz Map Devuelve: Establecer vista relación. De la versión: 1.2 Ver también: Map.Entry ---- - -------------------------------------------------- --------------- ---------- valores Colección pública Especificador: valores en la interfaz Mapa Devuelve: La vista de colección de los valores contenido en este mapa. De la versión: 1.2 ------------------- -------------------------------------------------- -- -------- equals public boolean iguales(Objeto o) Compara si el objeto especificado es igual a este Mapa, según lo definido por la interfaz del Mapa. especificador: es igual en la interfaz Mapa Anular: es igual en la clase Objeto Argumentos: o - El objeto que se comparará con esta Hashtable para determinar su igualdad Devuelve: Si el objeto especificado es igual a esta Hashtable, entonces es igual al objeto especificado. p>Devuelve verdadero si el objeto especificado es igual a este Mapa. De: 1.2 Ver también: Map.equals(Object)