Bisakah kita menemukan hashcodea listyang mengandung dirinya element?
Saya tahu ini adalah praktik yang buruk, tetapi inilah yang diminta pewawancara.
Ketika saya menjalankan kode berikut ini melempar StackOverflowError:
public class Main {
public static void main(String args[]) {
ArrayList<ArrayList> a = new ArrayList();
a.add(a);
a.hashCode();
}
}
Sekarang di sini saya punya dua pertanyaan:
- Kenapa ada
StackOverflowError? - Apakah mungkin untuk menemukan kode hash dengan cara ini?
Listantarmuka, hashCodedaftar tergantung pada anggotanya. Mengingat bahwa daftar adalah anggotanya sendiri, kode hash tergantung pada hashCode, yang tergantung pada hashCode... dan seterusnya, menyebabkan rekursi tak terbatas dan StackOverflowErrorAnda berlari ke. Sekarang pertanyaannya adalah: mengapa Anda memerlukan daftar untuk memuat dirinya sendiri? Saya dapat menjamin Anda bahwa Anda dapat mencapai apa pun yang Anda coba lakukan, dengan cara yang lebih baik, tanpa memerlukan keanggotaan rekursif seperti ini.