การเปรียบเทียบระหว่าง HashMap และ Hashtable เป็นคำถามทั่วไปในการสัมภาษณ์ Java ซึ่งใช้เพื่อทดสอบว่าโปรแกรมเมอร์สามารถใช้คลาสคอลเลกชันได้อย่างถูกต้องหรือไม่และพวกเขาสามารถปรับให้เข้ากับแนวคิดต่าง ๆ เพื่อแก้ปัญหาได้หรือไม่ HASHMAP ทำงานได้อย่างไรการเปรียบเทียบ ArrayList กับ Vector และคำถามนี้เป็นคำถามที่คลาสสิกที่สุดเกี่ยวกับกรอบคอลเลกชัน Java Hashtable เป็นคลาสคอลเลกชันที่ล้าสมัยที่มีอยู่ใน Java API เป็นเวลานาน มันถูกเขียนใหม่ใน Java 4 และใช้งานอินเตอร์เฟส MAP ดังนั้นจึงกลายเป็นส่วนหนึ่งของกรอบการรวบรวม Java Hashtable และ HashMap ค่อนข้างง่ายที่จะถามในการสัมภาษณ์ Java และกลายเป็นคำถามที่พบบ่อยที่สุดที่จะทดสอบในการสัมภาษณ์กรอบการรวบรวมดังนั้นอย่าลืมเตรียมคำถามนี้ก่อนเข้าร่วมการสัมภาษณ์ Java ใด ๆ
ในบทความนี้เราจะไม่เพียง แต่เห็นความแตกต่างระหว่าง HashMap และ Hashtable แต่ยังมีความคล้ายคลึงกันระหว่างพวกเขา
ความแตกต่างระหว่าง HashMap และ Hashtable
ทั้ง HashMap และ Hashtable ใช้อินเทอร์เฟซแผนที่ แต่ก่อนที่จะตัดสินใจว่าจะใช้อันไหนคุณต้องหาความแตกต่างระหว่างพวกเขาก่อน ความแตกต่างหลักคือ: ความปลอดภัยของเธรดการซิงโครไนซ์และความเร็ว
ข้อกำหนดสำคัญบางประการที่ควรทราบ:
1) Sychronized หมายความว่ามีเพียงหนึ่งเธรดเท่านั้นที่สามารถเปลี่ยนแฮชต์ได้ในแต่ละครั้ง กล่าวคือเธรดใด ๆ จะต้องได้รับการล็อคการซิงโครไนซ์ก่อนเมื่อต้องการอัปเดตแฮชแต้ม เธรดอื่น ๆ จะต้องรอจนกว่าการล็อคการซิงโครไนซ์จะถูกปล่อยออกมาก่อนที่พวกเขาจะได้รับการล็อคการซิงโครไนซ์และอัปเดตแฮชแต้มอีกครั้ง
2) ความล้มเหลวที่ปลอดภัยและตัววนซ้ำมีความเกี่ยวข้อง หากวัตถุคอลเลกชันสร้างตัววนซ้ำหรือ listiterator จากนั้นเธรดอื่น ๆ พยายามที่จะเปลี่ยนวัตถุคอลเลกชัน "โครงสร้าง" จะมีการโยนข้อยกเว้นพร้อมกัน Exception พร้อมกัน แต่เธรดอื่น ๆ สามารถเปลี่ยนวัตถุคอลเลกชันผ่านวิธีการตั้งค่า () ได้รับอนุญาตเพราะสิ่งนี้ไม่ได้เปลี่ยนคอลเลกชัน "โครงสร้าง" อย่างไรก็ตามหากโครงสร้างมีการเปลี่ยนแปลงและวิธีการตั้งค่า () เรียกว่าจะมีการโยนข้อยกเว้นที่ผิดกฎหมาย ExhergumentException
3) การเปลี่ยนแปลงโครงสร้างหมายถึงการลบหรือแทรกองค์ประกอบซึ่งจะส่งผลกระทบต่อโครงสร้างของแผนที่
เราสามารถสร้าง HashMap Sync ได้หรือไม่?
HashMap สามารถซิงโครไนซ์ผ่านคำสั่งต่อไปนี้:
แผนที่ m = คอลเลกชัน Synchronizemap (HashMap);
สรุปแล้ว
มีความแตกต่างหลักหลายประการระหว่างแฮชเชิลและแฮชแมป: ความปลอดภัยของด้ายและความเร็ว ใช้ hashtable เฉพาะเมื่อคุณต้องการความปลอดภัยของเธรดที่สมบูรณ์และหากคุณใช้ Java 5 หรือสูงกว่าโปรดใช้พร้อมกัน
ลิงค์ต้นฉบับ: Javarevisited Translation: importNew.com - Tang Xiaojuan Translation Link: http://www.importnew.com/7010.html