Java: Hashcode de una Clase A que contiene una Clase B que contiene una

Wildrat:

Tengo un problema al aplicar la función de código hash en mis clases. Como se explica en el título, tengo dos clases:

  • La clase A representa una prueba de la escuela, y por lo tanto, contiene varios atributos (es decir, sujeto, marca, y una instancia de la clase que representa al estudiante que tomó el examen).

  • La clase B es como se puede adivinar, el que representa al estudiante. Tiene algunos atributos (es decir, nombre, dirección, edad, etc.) y un ArrayList que contiene múltiples instancias de clase A (el estudiante puede tomar muchas pruebas).

Llega mi problema, me preguntan para implementar las funciones hashcode de ambas clases. El uso hashcode I es el i han enseñado, que se agregó el código hash de cada atributos, multiplicada por un número entero dependiendo de su tipo (es decir, se multiplica por 31 para cuerdas, 17 para int, 13 para los objetos, etc).

Pero si yo llamo el código hash de la clase A, entonces el código hash de la clase B se llama, y ​​luego se vuelve a llamar el código hash de una clase.

¿Cómo me deshago de este bucle? Pensé de deshacerse de la llamada código hash del código hash de clase del estudiante (A) en la clase de prueba (B). Pero, ¿hay alguna otra opción? Es mi primer intento de obtener ayuda, espero que yo no llegar a difíciles de entender.

Eran :

Una forma de evitar el problema es cambiar la abstracción. La clase que representa una prueba de la escuela ( "clase A") no tiene que contener una referencia de la instancia del estudiante ( "clase B"). En su lugar, que puede contener algún identificador de ese estudiante (alguna propiedad única del estudiante).

Otra forma: Creo que tiene sentido decir que un estudiante no se define por las pruebas que se toman. Esto significa que los casos de dos estudiantes que son iguales en todas las propiedades, excepto de la lista de pruebas se refieren al mismo estudiante. Esto implica que la lista de pruebas no debe participar en las hashCode()y equals()métodos.

Supongo que te gusta

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