Можемо чи ми знайти 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ви натрапляєте на неї. Тепер питання: чому вам потрібен список, щоб він містив себе? Я можу вам гарантувати, що ви можете досягти того, що ви намагаєтеся зробити, кращим чином, не вимагаючи такого рекурсивного членства.