¿Podemos encontrar el hashcode
de un list
que se contiene como element
?
Sé que esta es una mala práctica, pero esto es lo que preguntó el entrevistador.
Cuando ejecuté el siguiente código arroja un StackOverflowError
:
public class Main {
public static void main(String args[]) {
ArrayList<ArrayList> a = new ArrayList();
a.add(a);
a.hashCode();
}
}
Ahora aquí tengo dos preguntas:
- ¿Por qué hay un
StackOverflowError
? - ¿Es posible encontrar el código hash de esta manera?
List
interfaz, la hashCode
lista depende de sus miembros. Dado que la lista es su propio miembro, su código hash depende de su hashCode
, que depende de su hashCode
... y así sucesivamente, causando una recursión infinita y el StackOverflowError
que se está encontrando. Ahora la pregunta es: ¿por qué necesita una lista para contenerse? Puedo garantizarle que puede lograr lo que sea que esté tratando de hacer, de una mejor manera, sin requerir una membresía recursiva como esta.