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