En la colección Set, los elementos colocados no se pueden repetir. ¿Cómo determinar si se repiten o no?
La primera pregunta:
La implementación subyacente de TreeSet utiliza una estructura de datos de árbol rojo-negro. Con esta estructura, puede obtener la secuencia ordenada del Conjunto, pero el requisito previo es. : los elementos deben implementarse en la interfaz Comparable, solo se utiliza un método en esta interfaz, a saber, el método compareTo (). Al insertar un nuevo elemento en el Conjunto, primero se recorrerán los elementos existentes en el Conjunto (por supuesto, no se utilizará el recorrido secuencial. Se recomienda verificar el código fuente del método específico) y se llamará al método compareTo (). Según el resultado devuelto, se tomará una decisión. A su vez, se garantiza el orden de los elementos.
Segunda pregunta:
Como se mencionó anteriormente, los elementos agregados a Set deben definir su propio método igual (), pero para un buen estilo de diseño, es mejor anularlo al mismo tiempo que El método equals() también anula el método hashCode(). Por supuesto, para TreeSet, no es necesario anular el método hashCode(). Recuerde: la única razón para anular el método hashCode() es por eficiencia.
Al insertar un nuevo objeto en el Conjunto, primero compare el hashCode() del objeto con el hashCode() del objeto existente. Si son iguales, no se pueden insertar. , deben llamar al método igual () Si el resultado de igual es verdadero, si ya existe, no se puede insertar. Si es falso, se puede insertar.
Nota: Si el método hashCode() no está sobrecargado, solo existe equals(). La operación igual en dos objetos es la clave para determinar si dos objetos son iguales.
La tercera pregunta:
2) La diferencia entre HashSet y TreeSet:
1. TreeSet es la implementación del árbol binario y los datos en Treeset son. ordenados automáticamente, no se permiten valores nulos
2. HashSet es la implementación de la tabla hash. Los datos en HashSet no están ordenados, pero solo se puede ingresar un valor nulo. poner. Ambos El valor no se puede repetir, como la restricción única en la base de datos
3. HashSet requiere que el objeto ingresado implemente el método HashCode (). código hash y no está relacionado con el contenido. El mismo objeto String tiene el mismo código hash, por lo que el objeto introducido también tiene el código hash. Dado que el código hash es el mismo, el contenido no se puede repetir. Pero los objetos del mismo tipo se pueden colocar en diferentes instancias