Biz bulabilir hashcode
a list
kendisini içerdiğini element
?
Bunun kötü bir uygulama olduğunu biliyorum, ama görüşmeci bunu sordu.
Aşağıdaki kodu koştu zaman atar StackOverflowError
:
public class Main {
public static void main(String args[]) {
ArrayList<ArrayList> a = new ArrayList();
a.add(a);
a.hashCode();
}
}
Şimdi burada iki sorum var:
- Neden bir
StackOverflowError
? - Karma kodunu bu şekilde bulmak mümkün müdür?
List
arayüzün tanımıyla hashCode
, bir listenin üyelerine bağlı olduğu mümkün değildir . Listenin kendi üyesi olduğu göz önüne alındığında, karma kodu hashCode
, kendisine bağlıdır, bu da ona bağlıdır hashCode
... vb StackOverflowError
. Şimdi soru şudur: Neden bir listenin kendisini içermesini istersiniz? Böyle bir özyinelemeye gerek kalmadan daha iyi bir şekilde yapmaya çalıştığınız her şeyi başarabileceğinizi garanti edebilirim.