recorrer example ejemplo code java list hash collections

ejemplo - map java example



¿Hay una estructura hash java con solo claves y sin valores? (4)

Estoy buscando una estructura que tenga claves sin necesidad de un valor. Cuando se le pregunta, debe devolver verdadero si la clave se encuentra y de lo contrario es falso. Estoy buscando algo similar a Hashtable<MyClass, Boolean> excepto que la inserción solo requiere una clave y las consultas solo devuelven verdadero o falso, nunca son nulas.


Java Set está diseñado para eliminar duplicados y, con suerte, el HashMap debe estar utilizando Java Set internamente para administrar claves, ya que las claves nunca pueden tener duplicados, por lo que debe considerar establecer sus requisitos.


Necesita el HashSet de Java.

La descripción de la documentación oficial es:

Esta clase implementa la interfaz Set, respaldada por una tabla hash (en realidad una instancia de HashMap). No hace garantías en cuanto al orden de iteración del conjunto; en particular, no garantiza que el orden se mantendrá constante a lo largo del tiempo. Esta clase permite el elemento nulo.

Esta clase ofrece un rendimiento de tiempo constante para las operaciones básicas (agregar, eliminar, contener y tamaño), asumiendo que la función de dispersión dispersa los elementos correctamente entre los cubos. La iteración sobre este conjunto requiere un tiempo proporcional a la suma del tamaño de la instancia de HashSet (la cantidad de elementos) más la "capacidad" de la instancia de HashMap de respaldo (el número de segmentos). Por lo tanto, es muy importante no establecer la capacidad inicial demasiado alta (o el factor de carga demasiado bajo) si el rendimiento de la iteración es importante.

Tenga en cuenta que esta implementación no está sincronizada. Si varios subprocesos acceden a un hash establecido al mismo tiempo, y al menos uno de los subprocesos modifica el conjunto, se debe sincronizar externamente. Esto se logra normalmente sincronizando en algún objeto que naturalmente encapsula el conjunto. Si no existe tal objeto, el conjunto debe ser "ajustado" utilizando el método Collections.synchronizedSet. Esto se realiza mejor en el momento de la creación, para evitar el acceso no sincronizado accidental al conjunto:

Establezca s = Collections.synchronizedSet (nuevo HashSet (...));

Los iteradores devueltos por el método de iteración de esta clase son a prueba de fallos: si el conjunto se modifica en cualquier momento después de que se crea el iterador, de cualquier forma excepto a través del propio método de eliminación del iterador, el iterador lanza una ConcurrentModificationException. Por lo tanto, frente a la modificación concurrente, el iterador falla rápida y limpiamente, en lugar de arriesgarse a un comportamiento arbitrario y no determinista en un tiempo indeterminado en el futuro.

Tenga en cuenta que el comportamiento a prueba de fallos de un iterador no se puede garantizar, ya que, en términos generales, es imposible hacer ninguna garantía dura en presencia de una modificación concurrente no sincronizada. Los iteradores a prueba de errores lanzan ConcurrentModificationException sobre la base del mejor esfuerzo. Por lo tanto, sería incorrecto escribir un programa que dependiera de esta excepción para su corrección: el comportamiento a prueba de fallas de los iteradores debería usarse solo para detectar errores.

Esta clase es miembro de Java Collections Framework.


Ver también los métodos estáticos Collections#newSetFromMap que crea un conjunto basado en la implementación del mapa dado. Esto es útil para crear un conjunto de hash débil.


java.util.HashSet? Usando contains () para su búsqueda.