¿Podemos encontrar el hashcodede un listque 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?
Listinterfaz, la hashCodelista 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 StackOverflowErrorque 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.