¿Por qué es necesario para iguales de anulación () y hashCode () utilizando Conjunto de asociaciones muchos de valor?

La cascada :

En el manual de hibernación se dice que usted tiene que sobrescribir los métodos equals () y los métodos hashCode () si tiene la intención de poner instancias de clases persistentes en un Set (la forma recomendada para representar asociaciones multivaluadas).

Así que las preguntas aparecido:

  • ¿Por qué es un método recomendado para representar asociaciones muchos-valor en un conjunto? (¿Por qué no debería usar, digamos, ArrayList o LinkedList).

  • Lo que sucede detrás de la escena que debería anular esos métodos sólo cuando uso Set?

Eugene:

Bueno, ¿cómo lo haría una HashSetigualdad deducir? Esto se basa en hashCode/equals. Para una Setque tendría que ambos métodos, por Listiguales se utiliza solamente (en un método como containspor ejemplo), sino que se definen tanto, para que no se quede en extrañas sorpresas.

En general es una cosa buena si reemplaza compareTodesde Comparabletan-bien - esto es, por ejemplo, se utiliza internamente para HasMapcuando se encuentre un empate. Usted no tiene que, de alguna manera, pero su una idea buena, si alguna vez va a tener éstos como claves en una Map.

Que tiecomo he dicho se utiliza cuando dos hashcodes son iguales y HashMapdecide trasladarse a una perfectly balanced tree node, ver aquí o éste ; o incluso éste

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=190553&siteId=1
Recomendado
Clasificación