Red de conocimiento informático - Material del sitio web - ¿Cómo lidiar con relaciones no únicas en JAVA?

¿Cómo lidiar con relaciones no únicas en JAVA?

K,V>

Todas las interfaces implementadas:

Serializable, Clonable, Mapa

Subclases conocidas directamente:

p>

Propiedades, valores predeterminados de UI

------------- ----------------------- -- -------------------------------------

clase pública Hashtableextiende Diccionarioimplementa Mapa, clonable, serializable Esta clase implementa una tabla hash que asigna claves a los valores correspondientes. Cualquier objeto no nulo se puede utilizar como clave o valor.

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 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ónelementos()

Devuelve una enumeración de los valores de esta tabla hash.

Set> EntrySet()

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ónkeys()

Devuelve una enumeración de las claves en esta tabla hash.

Set keySet()

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 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 valores()

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 claves() Devuelve una enumeración de las claves en este hash mesa .

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 elementos() Devuelve una enumeración de los valores de esta tabla hash . Utilice métodos de enumeración en el objeto devuelto para obtener los elementos en orden.

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 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. p>

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> EntrySet() Devuelve una vista de conjunto de las claves contenidas en esta Hashtable. Cada elemento del conjunto es un Map.Entry.Set respaldado por una Hashtable, por lo que los cambios en Hashtable se reflejan en el Set y viceversa. Set admite la eliminación de elementos (elimina la entrada correspondiente de Hashtable), pero no la adición de elementos.

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 valores() Devolver A Vista de colección de los valores contenidos en este Hashtable. Las colecciones están respaldadas por Hashtables, por lo que los cambios en Hashtable se reflejan en la colección. Las colecciones están respaldadas por Hashtables, por lo que los cambios en Hashtable se reflejan en la Colección y viceversa. La colección admite la eliminación de elementos (eliminando la entrada correspondiente de Hashtable), pero no la adición de elementos.

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)