1. Problema
1. ¿Cómo usa hashset?
2. ¿Cuándo y por qué los objetos en Treemap y Treeset implementan una interfaz comparable?
2. Respuesta:
1. Hashset se implementa a través de HashMap, TreeSet se implementa a través de Treemap, pero SET solo usa la tecla MAP.
2. La clave y el conjunto de mapas tienen una característica común, que es la singularidad del conjunto. Treemap tiene un pedido adicional.
3. Hashcode e igual () se usan para hashmap. Debido a que no hay necesidad de clasificar, solo necesita prestar atención al posicionamiento y la singularidad.
A.Hashcode se usa para calcular el valor hash, y el valor hash se usa para determinar el índice de tabla hash.
b. Un índice en la tabla hash almacena una lista vinculada, por lo que debe recorrer el método igual para comparar cada objeto en la cadena antes de poder localizar la entrada correspondiente al valor de clave.
Cuando C.put, si la tabla hash no se encuentra, agregue una entrada antes de la lista vinculada. Si se encuentra, reemplace el valor en la entrada y devuelva el valor anterior.
d. Al sobrescribir el hashcode () e igual () de la clave, tenga cuidado de no asociarlos con propiedades mutables. De lo contrario, después de que la propiedad cambie, el húsico cambiará y igual también será falso, por lo que no se encontrará en el mapa. Además, dicho objeto no se puede liberar porque no se puede encontrar, lo que se convertirá en una referencia no válida (equivalente a una fuga de memoria).
4. Dado que Treemap requiere clasificación, se necesita un comparador para comparar el tamaño del valor clave. Por supuesto, también se posiciona utilizando el comparador.
A.Comparator se puede especificar al crear Treemap y luego usar Comparator.Compare al clasificar
b. Si el comparador no se especifica durante la creación, se utilizará el método Key.CompeTo (), que requiere la clave para implementar la interfaz comparable.
C.TreemAP se implementa utilizando la estructura de datos del árbol, por lo que el posicionamiento se puede completar utilizando la interfaz Compare.
import java.util.hashset; import java.util.iterator; clase pública wpsklhashset {// uso de set en java (no se permiten objetos duplicados): public static void main (string [] args) {hashset hashset = new Hashset (); String a = new ("A"); String B = New String ("B"); String ("B"); Hashset.add (a); Hashset.add (b); System.out.println (Hashset.size ()); String Cz = Hashset.add (c)? "Este objeto no existe": "ya existe"; system.out.println ("prueba si se puede agregar un objeto"+cz); system.out.println (hashset.isempty ()); // prueba si un objeto ya está contenido en System.out.println (hashset.contains ("A")); Iterator Ir = Hashset.Iterator (););); while (ir.hasnext ()) {system.out.println (ir.next ());} // prueba si un objeto puede eliminar System.out.println (hashset.remove ("a")); system.out.println (hashset.remove ("a")); // después de probar, si desea usar la variable nuevamente, debe volver a ser la variable, debe volver a hacerlo, lo que debe volver a hacer la variable, debe volver a ser una variable, lo que debe volver a hacer la variable, debe volver a ser variable, lo debe volver a ser variable. ir = hashset.iterator (); while (ir.hasnext ()) {System.out.println (ir.next ());}}}/*** A través de este programa, también puede probar el desorden de los elementos adicionales del conjunto de árboles y el orden de la salida*/import java.util.treeset; import java.util.iterator; public classtest {public static void void main) TreeSet (); Tree.Add ("China"); Tree.Add ("América"); Tree.Add ("Japón"); Tree.Add ("Chino"); Iterator iterer = Tree.Iterator (); while (iter.hasnext ()) {System.out.println (iter.next ());}}}Además, estoy encendiendo otras diferencias (gracias a mi amigo Andygulin que "Baidu sabe"):
1. TreeSet es implementado por un árbol de dos diferencias. Los datos en TreeSet se clasifican automáticamente y los valores nulos no están permitidos.
2. Hashset es implementado por una tabla hash. Los datos en el hashset están desordenados. Puedes poner nulo, pero solo puedes poner uno nulo. Los valores en ambos no se pueden repetir, al igual que la restricción única en la base de datos.
3. Hashset requiere que el objeto colocado debe implementar el método hashcode (). El objeto colocado está marcado con el código hashcode, y el objeto hashcode con el mismo contenido tiene el mismo hashcode, por lo que el contenido colocado no se puede repetir. Pero los objetos de la misma clase se pueden colocar en diferentes casos.
Resumir
Lo anterior es todo el contenido de este artículo sobre la diferencia entre los métodos de uso de hashset y TreeSet, y espero que sea útil para todos. Los amigos interesados pueden continuar referiéndose a otros temas relacionados en este sitio. Si hay alguna deficiencia, deje un mensaje para señalarlo. ¡Gracias amigos por su apoyo para este sitio!