자체를 포함 hashcode하는의 list를 찾을 수 있습니까 element?
나는 이것이 나쁜 습관이라는 것을 알고 있지만 이것은 면접관이 요구 한 것입니다.
다음 코드를 실행하면 다음이 발생합니다 StackOverflowError.
public class Main {
public static void main(String args[]) {
ArrayList<ArrayList> a = new ArrayList();
a.add(a);
a.hashCode();
}
}
이제 두 가지 질문이 있습니다.
- 왜
StackOverflowError있습니까? - 이런 식으로 해시 코드를 찾을 수 있습니까?
List인터페이스의 정의에 hashCode따라 목록의 구성원에 따라 목록이 달라집니다. 목록이 자체 멤버 인 경우 해시 코드는에 의존하며 hashCode, 그에 따라 hashCode... 등에 의존 하여 무한 재귀를 발생시키고 StackOverflowError사용자는 실행됩니다. 이제 문제는 : 왜 자신을 포함하기 위해 목록이 필요한가요? 나는 이와 같은 재귀 멤버쉽을 요구하지 않고 더 나은 방법으로 당신이하려는 일을 성취 할 수 있음을 보장 할 수 있습니다.