เราสามารถหาhashcodeของlistที่มีตัวมันเองเป็นelement?
ฉันรู้ว่านี่เป็นวิธีปฏิบัติที่ไม่ดี แต่นี่คือสิ่งที่ผู้สัมภาษณ์ถาม
เมื่อฉันรันรหัสต่อไปนี้มันจะพ่น a 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คุณกำลังทำงานอยู่ ตอนนี้คำถามคือ: ทำไมคุณต้องการรายการที่จะมีตัวเอง? ฉันรับประกันได้ว่าคุณจะประสบความสำเร็จในทุกสิ่งที่คุณพยายามทำในวิธีที่ดีกว่าโดยไม่ต้องเป็นสมาชิกแบบเรียกซ้ำแบบนี้