ความแตกต่างระหว่าง Hashmap และ Hashtable มักถูกถามโดยผู้อื่น ฉันจะสรุปที่นี่วันนี้
(i) ประวัติความเป็นมาของมรดกแตกต่างกัน
Hashtable ระดับสาธารณะขยายพจนานุกรมใช้ Mappublic Class HashMap ขยาย MAP AbstractMap
Hashtable นั้นสืบทอดมาจากคลาสพจนานุกรมและ HashMap เป็นการดำเนินการของอินเทอร์เฟซแผนที่ที่แนะนำโดย Java 1.2
(ii) ความปลอดภัยที่แตกต่างกัน
HashMap นั้นไม่ได้ซิงโครไนซ์และแฮชช์ได้ถูกซิงโครไนซ์ตามค่าเริ่มต้นซึ่งหมายความว่า Hashtable เป็นเธรดที่ปลอดภัยและหลายเธรดสามารถแชร์แฮชท์ได้ และหากไม่มีการซิงโครไนซ์ที่ถูกต้องหลายเธรดไม่สามารถแชร์ HASHMAP ได้ Java 5 ในภายหลังให้พร้อมกันพร้อมกันซึ่งเป็นสิ่งทดแทนสำหรับแฮชแต้มและมีความสามารถในการปรับขนาดได้ดีกว่าแฮช แน่นอนเราสามารถซิงโครไนซ์ HashMap ได้โดย:
แผนที่ m = คอลเลกชัน Synchronizemap (HashMap);
(iii) เหมือนกันหรือคล้ายกันในค่า NULL ที่เป็นไปได้
HASHMAP ช่วยให้คุณใช้ค่า NULL เป็นคีย์หรือค่าสำหรับรายการตาราง มีเพียงหนึ่งระเบียนในแฮชแมปที่สามารถเป็นคีย์ที่ว่างเปล่าได้ แต่จำนวนรายการใด ๆ อาจเป็นค่าที่ว่างเปล่า กล่าวคือหากไม่พบคีย์การค้นหาในตารางหรือหากพบคีย์การค้นหา แต่เป็นค่าที่ว่างเปล่าแล้ว Get () จะส่งคืนค่า NULL; ในขณะที่ Hashtable ไม่ทำงาน แต่คีย์และค่าไม่อนุญาตให้ค่า NULL
(iv) การใช้งานภายในของวิธีการสำรวจทั้งสองนั้นแตกต่างกัน
Hashtable และ HashMap ใช้ตัววนซ้ำทั้งคู่ ตัววนซ้ำของ HashMap เป็นตัววนซ้ำที่ล้มเหลวอย่างรวดเร็วในขณะที่ตัววนซ้ำของ Hashtable ของ Hashtable นั้นไม่ล้มเหลวอย่างรวดเร็ว เนื่องจากเหตุผลทางประวัติศาสตร์ Hashtable ยังใช้วิธีการแจงนับ
(v) การใช้ค่าแฮชที่แตกต่างกัน
Hashtable ใช้ HashCode ของวัตถุโดยตรงในขณะที่ HASHMAP จำเป็นต้องคำนวณค่าแฮชใหม่
(vi) ขนาดและวิธีการขยายตัวเริ่มต้นของอาร์เรย์ของวิธีการใช้งานภายในนั้นแตกต่างกัน
ขนาดเริ่มต้นของอาร์เรย์แฮชใน hashtable คือ 11 และวิธีการเพิ่มขึ้นนั้นเก่า*2+1; ขนาดเริ่มต้นของอาร์เรย์แฮชใน HASHMAP คือ 16 และจะต้องเป็นเลขชี้กำลังของ 2
ขอบคุณสำหรับการอ่านฉันหวังว่ามันจะช่วยคุณได้ ขอบคุณสำหรับการสนับสนุนเว็บไซต์นี้!