ความแตกต่างระหว่าง HashMap และ TreeMap ใน Java
เนื้อหา
HashMap และ TreeMap เป็นคลาส Map และทั้งสองใช้อินเตอร์เฟส Map แผนที่เป็นวัตถุที่เก็บคู่ค่าคีย์โดยที่แต่ละคีย์ไม่ซ้ำกันและอาจมีค่าซ้ำกัน คลาส HashMap ใช้ตารางแฮชเป็นโครงสร้างข้อมูล TreeMap ใช้ต้นไม้สีแดงดำเป็นโครงสร้างข้อมูล ความแตกต่างที่สำคัญระหว่าง HashMap และ Treemap ก็คือ HashMap ไม่รักษาลำดับการแทรกในขณะที่ treemap ทำ.
ดังนั้นให้เราเริ่มการสนทนาของเรากับความแตกต่างระหว่าง HashMap และ TreeMap ด้วยความช่วยเหลือของแผนภูมิเปรียบเทียบที่แสดงด้านล่าง
- แผนภูมิเปรียบเทียบ
- คำนิยาม
- ความแตกต่างที่สำคัญ
- ข้อสรุป
แผนภูมิเปรียบเทียบ
พื้นฐานสำหรับการเปรียบเทียบ | HashMap | TreeMap |
---|---|---|
ขั้นพื้นฐาน | HashMap ไม่รักษาคำสั่งแทรก | TreeMap ดูแลรักษาคำสั่งแทรก |
โครงสร้างข้อมูล | HashMap ใช้ Hash Table เป็นโครงสร้างข้อมูลพื้นฐาน | TreeMap ใช้ต้นไม้สีแดงดำเป็นโครงสร้างข้อมูลพื้นฐาน |
Null Keys and Values | HashMap อนุญาตให้ใช้ปุ่ม Null เมื่อโฆษณามีค่าเป็น Null ไม่ จำกัด จำนวนครั้ง | TreeMap ไม่อนุญาตให้ใช้ Null key แต่อนุญาตให้ Null Values ได้ทุกเวลา |
ขยายและนำไปใช้ | HashMap ขยายคลาส AbstractMap และใช้อินเตอร์เฟส Map | TreeMap ขยายคลาส AbstractMap และใช้อินเทอร์เฟซ SortedMap และ NavigableMap |
ประสิทธิภาพ | HashMap ทำงานได้เร็วขึ้น | TreeMap เปรียบเทียบกับ HashMap ทำงานช้าลง |
ความหมายของ HashMap
HashMap เป็นคลาส Map มันใช้ ตารางแฮชเป็นโครงสร้างข้อมูลในการจัดเก็บคู่ค่าคีย์แผนที่ การแทรกคู่คีย์ - ค่าเสร็จสิ้นโดยใช้ รหัสแฮช ของ กุญแจ. ดังนั้นแต่ละคีย์ในแผนที่จะต้องไม่ซ้ำกันเนื่องจากมันจะถูกใช้เพื่อดึงค่า
ลำดับการแทรกใน HashMap คือ ไม่ เก็บรักษาไว้ซึ่งหมายความว่าวัตถุ hashmap ไม่ได้คืนองค์ประกอบตามลำดับที่พวกเขาถูกแทรก ในทางกลับกันลำดับที่องค์ประกอบจะถูกส่งคืนจะไม่ได้รับการแก้ไข
สำคัญ ได้รับอนุญาตให้เป็น โมฆะ ในครั้งเดียว แต่ ค่า เป็นไปได้ โมฆะ ในเวลาใดก็ได้ HashMap สามารถมี ต่างกัน วัตถุสำหรับคีย์เช่นเดียวกับค่า
มีตัวสร้างสี่ของ HashMap:
HashMap () HashMap (แผนที่ m) HashMap (ความจุ int), HashMap (ความจุ int, float fillRatio)
เป็นครั้งแรก ตัวสร้างสร้างวัตถุว่างของ HashMap ที่สอง ตัวสร้างเริ่มต้น HashMap โดยใช้องค์ประกอบของ Map m ที่สาม ตัวสร้างเริ่มต้น HashMap ด้วยความสามารถที่ระบุไว้ในอาร์กิวเมนต์ ที่สี่ ตัวสร้างเริ่มต้นความจุเช่นเดียวกับอัตราส่วนการเติมของวัตถุ HashMap
ค่าเริ่มต้น ความจุ ของ HashMap คือ 16และค่าเริ่มต้น เติมอัตราส่วน ของ HashMap คือ 0.75.
ความหมายของ TreeMap
เช่นเดียวกับ HashMap TreeMap ยังเป็นคลาสแผนที่ TreeMap ขยาย AbstractMap ชั้นเรียนและการดำเนินการ NavigabelMap และ SortedMap. กระบวนการ TreeMap วัตถุเก็บองค์ประกอบแผนที่ในโครงสร้างแบบต้นไม้ โครงสร้างข้อมูลที่ใช้สำหรับจัดเก็บแผนที่คือ ต้นไม้สีแดง - ดำ.
TreeMap จัดเก็บคู่ของค่าคีย์ในลำดับที่เรียงลำดับซึ่งช่วยในการเรียกคืนอย่างรวดเร็วขององค์ประกอบ กระบวนการ TreeMap วัตถุส่งกลับองค์ประกอบใน เรียงลำดับ (จากน้อยไปมาก) คำสั่งซื้อ
มีสี่ constructors ของ TreeMap:
TreeMap () TreeMap (Comparator <? super K> comp) TreeMap (แผนที่ <? extends K,? ขยาย V> m) TreeMap (SortedMap เป็นครั้งแรก นวกรรมิกสร้างวัตถุที่ว่างเปล่าของ TreeMap ที่จะเรียงลำดับตามธรรมชาติคีย์ของมัน ที่สอง นวกรรมิกจะสร้างแผนที่ต้นไม้ที่ว่างเปล่าที่จะถูกจัดเรียงโดย cmp ตัวเปรียบเทียบ. ที่สาม นวกรรมิกด้านบนจะสร้าง treemap ที่จะเริ่มต้นได้โดยใช้รายการของ แผนที่ ม.. ที่สี่ นวกรรมิกจะสร้าง treemap ที่จะเริ่มต้นได้โดยใช้รายการของ SortedMap เอสเอ็ม. Treemap ไม่มีวิธีการใหม่ใด ๆ เป็นของตัวเองโดยใช้วิธีการของอินเตอร์เฟส NavigableMap และ SortedMap และคลาส AbstractMap TreeMap ควรใช้เฉพาะเมื่อคุณต้องการคู่ค่าคีย์ในแบบฟอร์มที่เรียงลำดับ เนื่องจากการเรียงลำดับนั้นรวมถึงต้นทุนประสิทธิภาพ HashMap ที่ไม่ซิงโครไนซ์จะทำงานเร็วขึ้น
สรุป: