ความแตกต่างระหว่าง HashMap และ Hashtable (พร้อมตาราง)

สารบัญ:

Anonim

HashMap กำลังดำเนินการใช้งานส่วนต่อประสานแผนที่พื้นฐานในจาวา Hashtable ดำเนินการจากคลาส Hashtable ที่จับคู่คีย์กับค่า ทั้ง HashMap และ Hashtable ทำงานในส่วนต่อประสานแผนที่ใน java ดังนั้นพวกเขาจึงมีความเกี่ยวข้องกันอย่างใกล้ชิด แต่ก็แตกต่างกันอย่างมากในหลาย ๆ ด้าน

HashMap กับ Hashtable

ความแตกต่างระหว่าง HashMap และ Hashtable คือ HashMap เปิดใช้งานค่าที่ซ้ำกันสำหรับทั้งคีย์และค่า ในขณะที่ Hashtable จะไม่เปิดใช้งานค่าที่ซ้ำกันสำหรับทั้งคีย์และค่า HashMap ไม่พร้อมกัน ดังนั้นพวกเขาจึงเปิดใช้งานหลายเธรดเพื่อเข้าหาพวกเขาในขณะที่ Hashtable ทำงานพร้อมกันและไม่ได้เปิดใช้งานหลายเธรดเพื่อเข้าหาพวกเขา

Hashmap เป็นโครงสร้างข้อมูลที่จัดเก็บคีย์และค่าที่ไม่ซ้ำกันใน java คลาส HashMap ได้รับการจัดระเบียบอย่างดีสำหรับการวางตำแหน่งค่า การแทรกรายการ และการลบรายการ นอกจากนี้ รายการที่พบใน HashMap จะไม่ถูกเรียงลำดับ HashMap ไม่ปลอดภัยสำหรับเธรด เนื่องจากทำให้หลายเธรดสามารถเข้าใกล้ได้

Hashtable ติดตามตัวแปรที่ประกาศใน java Hashtable ขึ้นอยู่กับปัจจัยโหลดมากกว่าจำนวนรายการที่มีอยู่ในตารางเสมอ ดังนั้นการดำเนินการของ Hashtable จึงช้ามาก Hashtable นั้นปลอดภัยสำหรับหลายเธรด เนื่องจากไม่ได้เปิดใช้งานหลายเธรดเพื่อเข้าใกล้

ตารางเปรียบเทียบระหว่าง HashMap และ Hashtable

พารามิเตอร์ของการเปรียบเทียบ

HashMap

Hashtable

พร้อมกัน HashMap ไม่ได้เกิดขึ้นพร้อมกัน ดังนั้นจึงเปิดใช้งานหลายเธรดที่เข้าใกล้ซึ่งไม่ปลอดภัยจากหลายเธรด Hashtable ทำงานพร้อมกันและปลอดภัยสำหรับหลายเธรด เนื่องจากไม่ได้เปิดใช้งานหลายเธรดเพื่อเข้าใกล้
ความเร็ว การดำเนินการ HashMap เกิดขึ้นที่ความเร็วสูง การดำเนินการ Hashtable เกิดขึ้นที่ความเร็วช้ามาก
การยอมรับค่าว่าง HashMap ยอมรับค่า Null สำหรับทั้งคีย์และค่า Hashtable ไม่ได้เปิดใช้งานค่า Null สำหรับทั้งคีย์และค่า
ตัววนซ้ำ ตัววนซ้ำล้มเหลวอย่างรวดเร็วและบางครั้งส่ง ConcurrentModificationException ตัวแจงนับไม่ล้มเหลวอย่างรวดเร็วและไม่ส่ง ConcurrentModificationException ใด ๆ
การสืบทอดคลาส คลาส AbstractMap ชั้นเรียนพจนานุกรม
แอปพลิเคชัน HashMap ใช้ในหน้าเว็บและเว็บแอปพลิเคชัน Hashtable ใช้สำหรับตัวตรวจสอบการสะกดคำออนไลน์และโปรแกรมในเกม

HashMap คืออะไร?

HashMap คือชุดของคีย์และค่าที่ไม่ซ้ำกันซึ่งดำเนินการเรียกใช้อินเทอร์เฟซแผนที่พื้นฐานใน java คีย์สามารถพบได้เป็นดัชนีในรายการ แต่ในแผนที่ จะพบเป็นวัตถุ นอกจากนี้ แต่ละคีย์จะจับคู่กับค่าเดียวเท่านั้น คลาส HashMap มีวิธีการค้นหาค่า การแทรก และการลบรายการอย่างเป็นระบบ

HashMap มีตัวสร้างหลายประเภท ตัวสร้าง HashMap() เป็นประเภทของตัวสร้างที่ใช้ในการล้าง HashMap ด้วยความจุเริ่มต้นเริ่มต้นและปัจจัยโหลดเริ่มต้น Hashmap มีค่าที่ซ้ำกัน และรายการที่พบใน HashMap จะไม่เรียงลำดับ ตัวอย่างเช่น HashMap คลาสสาธารณะขยาย AbstractMap<K, V ใช้ Map, cloneable, serializable

HashMap (int ความจุเริ่มต้น) เป็นประเภทของตัวสร้างที่ใช้ในการล้าง HashMap ด้วยความจุเริ่มต้นที่ระบุและปัจจัยโหลดเริ่มต้น นอกจากนี้ ตัวสร้าง HashMap (ความจุเริ่มต้น int ปัจจัยโหลดแบบลอย) จะล้าง HashMap ด้วยความจุเริ่มต้นที่ระบุและปัจจัยโหลด

HashMap ไม่พร้อมกัน ดังนั้นพวกเขาส่วนใหญ่จึงเปิดใช้งานหลายเธรดใกล้พวกเขา และเนื่องจากพฤติกรรมที่มีการจัดระเบียบอย่างดี การดำเนินการจึงรวดเร็ว HashMap(Mapm) ใช้เพื่อสร้าง HashMap ใหม่โดยใช้การแมปก่อนหน้านี้เหมือนกับแผนที่ที่ระบุ HashMaps มักใช้ในเว็บเพจและเว็บแอปพลิเคชัน

Hashtable คืออะไร?

Hashtable ทำงานพร้อมกันและส่วนใหญ่ดำเนินการจากคลาส Hashtable ที่จับคู่คีย์กับค่า เนื่องจากลักษณะการทำงานพร้อมกันของ Hashtable หลายเธรดจะไม่เข้าใกล้พวกเขา Hashtable นั้นง่ายต่อการดำเนินการและมีค่าที่ซ้ำกัน นอกจากนี้ยังดำเนินการเรียกใช้อินเทอร์เฟซแผนที่พื้นฐานในจาวา

ใน Hashtable หากพบว่าคีย์เป็นสตริง ฟังก์ชันแฮชจะแปลงเป็นตัวเลข แต่ถ้าพบว่าคีย์อินพุตเป็นจำนวนเต็ม ระบบจะใช้คีย์ mod TableSize ฟังก์ชันแฮชคำนวณได้ง่าย แต่การดำเนินการแฮชเทเบิลนั้นเกิดขึ้นที่ความเร็วต่ำมาก ความเร็วต่ำเกิดจาก Hashtable ขนาดใหญ่ และไม่ได้จัดสรรคีย์

Hashtable ใช้เพื่อดำเนินการแทรกและค้นหาการดำเนินการเฉพาะในเวลาเฉลี่ยคงที่ Hashtable ส่วนใหญ่ขึ้นอยู่กับปัจจัยโหลดมากกว่าจำนวนรายการที่มีอยู่ในนั้น ใน Hashtable สิ่งสำคัญคือต้องมี TableSize เฉพาะ ตัวเลือกที่เหมาะสมของปัจจัยการโหลด และฟังก์ชันแฮช

ใน Hashtable ยังมีฟังก์ชันแฮชที่สอง ซึ่งใช้สำหรับการแก้ปัญหาการชน Hashtable ใช้ในคอมไพเลอร์เพื่อรันตารางสัญลักษณ์ โปรแกรมเกมเป็นตารางการย้ายตำแหน่ง และตัวตรวจสอบการสะกดออนไลน์

ความแตกต่างหลักระหว่าง HashMap และ Hashtable

บทสรุป

ทั้ง HashMap และ Hashtable เป็นการดำเนินการอินเทอร์เฟซแผนที่พื้นฐานใน java HashMap เป็นกล่องที่สงวนคอลเลกชันของคู่คีย์หรือค่าที่ไม่มีค่าที่ซ้ำกัน ใน HashMap คีย์และค่าของคีย์ที่สงวนไว้จะสร้างรายการ และรายการที่อยู่ในคีย์นั้นไม่ได้เรียงลำดับ และส่วนใหญ่มีความเร็วในการดำเนินการสูง Hashtable จับคู่คีย์กับค่าต่างๆ และคอยตรวจสอบตัวแปรที่ประกาศไว้ใน java และมีความเร็วในการดำเนินการต่ำเนื่องจากลักษณะที่ไม่เป็นระเบียบ

ทั้ง HashMap และ Hashtable มีฟังก์ชันที่คล้ายกันมากมาย แต่ก็แตกต่างกันในหลายแง่มุม HashMap และ Hashtable มีแอปพลิเคชั่นที่มีประโยชน์มากมาย เช่น ใช้ในหน้าเว็บ เว็บแอปพลิเคชัน การเขียนโปรแกรมเกม คอมไพเลอร์ และเครื่องตรวจการสะกดออนไลน์

อ้างอิง

ความแตกต่างระหว่าง HashMap และ Hashtable (พร้อมตาราง)