ความแตกต่างระหว่าง HashMap และ TreeMap ใน Java

ผู้เขียน: Laura McKinney
วันที่สร้าง: 2 เมษายน 2021
วันที่อัปเดต: 10 พฤษภาคม 2024
Anonim
#12 - Difference b/w ConcurrentHashMap & SynchronizedMap in Java || (HashTable vs HashMap)
วิดีโอ: #12 - Difference b/w ConcurrentHashMap & SynchronizedMap in Java || (HashTable vs HashMap)

เนื้อหา


HashMap และ TreeMap เป็นคลาส Map และทั้งสองใช้อินเตอร์เฟส Map แผนที่เป็นวัตถุที่เก็บคู่ค่าคีย์โดยที่แต่ละคีย์ไม่ซ้ำกันและอาจมีค่าซ้ำกัน คลาส HashMap ใช้ตารางแฮชเป็นโครงสร้างข้อมูล TreeMap ใช้ต้นไม้สีแดงดำเป็นโครงสร้างข้อมูล ความแตกต่างที่สำคัญระหว่าง HashMap และ Treemap ก็คือ HashMap ไม่รักษาลำดับการแทรกในขณะที่ treemap ทำ.

ดังนั้นให้เราเริ่มการสนทนาของเรากับความแตกต่างระหว่าง HashMap และ TreeMap ด้วยความช่วยเหลือของแผนภูมิเปรียบเทียบที่แสดงด้านล่าง

  1. แผนภูมิเปรียบเทียบ
  2. คำนิยาม
  3. ความแตกต่างที่สำคัญ
  4. ข้อสรุป

แผนภูมิเปรียบเทียบ

พื้นฐานสำหรับการเปรียบเทียบHashMapTreeMap
ขั้นพื้นฐาน HashMap ไม่รักษาคำสั่งแทรกTreeMap ดูแลรักษาคำสั่งแทรก
โครงสร้างข้อมูลHashMap ใช้ Hash Table เป็นโครงสร้างข้อมูลพื้นฐานTreeMap ใช้ต้นไม้สีแดงดำเป็นโครงสร้างข้อมูลพื้นฐาน
Null Keys and Values HashMap อนุญาตให้ใช้ปุ่ม Null เมื่อโฆษณามีค่าเป็น Null ไม่ จำกัด จำนวนครั้งTreeMap ไม่อนุญาตให้ใช้ Null key แต่อนุญาตให้ Null Values ​​ได้ทุกเวลา
ขยายและนำไปใช้HashMap ขยายคลาส AbstractMap และใช้อินเตอร์เฟส MapTreeMap ขยายคลาส 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

  1. ทั้งคลาสใช้เพื่อสร้างออบเจกต์แผนที่ แต่ความแตกต่างพื้นฐานระหว่าง HashMap และ Treemap คือ HashMap ไม่ได้รักษาลำดับการแทรกในขณะที่ Treemap ทำ
  2. โครงสร้างข้อมูลที่ใช้โดย Hashmap เพื่อจัดเก็บองค์ประกอบแผนที่คือตารางแฮชและโครงสร้างข้อมูลที่ TreeMap ใช้ในการจัดเก็บองค์ประกอบแผนที่เป็นต้นไม้สีแดงดำ
  3. ทั้งคลาส Hashmap และ Treemap ขยายคลาส AbstractMap แต่คลาส HashMap ใช้อินเตอร์เฟส Map และ TreeMap ใช้อินเตอร์เฟส NavigableMap และ SortedMap
  4. ค่าสามารถเป็นค่า Null ไม่ว่าเวลาใดก็ตามในทั้งคู่ แต่อนุญาตให้คีย์เป็น Null เพียงครั้งเดียวใน HashMap และคีย์ไม่สามารถอยู่ใน Treemap ได้
  5. ประสิทธิภาพของ HashMap เร็วขึ้นโดยไม่เสียเวลาในการเรียงลำดับองค์ประกอบแผนที่เช่นเดียวกับ TreeMap ดังนั้น TreeMap จะทำงานช้ากว่า HashMap

สรุป:

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