ความแตกต่างระหว่าง HashMap และ LinkedHashMap ใน 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 และ LinkedHashMap เป็นคลาสที่ค่อนข้างคล้ายกันและใช้สำหรับการสร้างแผนที่ คลาส HashMap ขยายคลาส AbstractMap เพื่อใช้ตารางแฮชเพื่อเก็บองค์ประกอบในแผนที่ ชั้น LinkedHashMap รักษารายการในแผนที่ตามลำดับการแทรกของพวกเขา คุณลักษณะที่แยกความแตกต่าง HashMap และ LinkedHashMap จากกันและกันคือ HashMap ไม่รักษาลำดับของรายการที่เก็บไว้ในแผนที่ ในทางกลับกัน, LinkedHashMap ใช้โครงสร้างข้อมูลแบบไฮบริดเพื่อรักษาลำดับของรายการที่แทรกไว้ ในตารางเปรียบเทียบด้านล่างฉันสำรวจความแตกต่างอื่น ๆ ระหว่าง HashMap และ LinkedHashMap เพียงแค่ดู

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

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

พื้นฐานสำหรับการเปรียบเทียบHashMapLinkedHashMap
ขั้นพื้นฐานลำดับการแทรกใน HashMap จะไม่ถูกรักษาไว้ลำดับการแทรกถูกสงวนไว้ใน LinkedHashMap
โครงสร้างข้อมูลHashMap ใช้ HashTable เพื่อจัดเก็บแผนที่LinkedHashMap ใช้ HashTable พร้อมกับ Linked List เพื่อจัดเก็บแผนที่
ขยายการดำเนินการ /HashMap ขยาย AbstractMap และใช้อินเทอร์เฟซแผนที่LinkedHashMap ขยาย Hashmap
รุ่นHashMap เปิดตัวใน JDK 2.0LinkedHashMap ถูกนำมาใช้ใน JDK 4.0
เหนือศีรษะค่าใช้จ่ายค่อนข้างน้อยเมื่อเทียบกับค่าใช้จ่ายมากขึ้นเพราะมันจะต้องรักษาลำดับของรายการแผนที่


ความหมายของ HashMap

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

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

Hashmap hm = new Hashmap (); hm.put ("Ajay", 275); hm.put ("Vijay", 250); hm.put ("จอนนี่", 150); hm.put ("จอร์แดน", 200); System.out.ln (hm); / * output * / {Vijay = 250, Jonny = 150, Ajay = 275, Jordan = 200}

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


คำจำกัดความของ LinkedHashMap

LinkedHashMap ยังเป็นคลาสที่ใช้ในการสร้างแผนที่ LinkedHashMap ขยาย HashMap ระดับและได้รับการแนะนำในภายหลังเพื่อ HashMap ใน JDK รุ่น 4.0 การเป็นคลาสลูกของคลาส HashMap LinkedHashMap นั้นเหมือนกับคลาส HashMap รวมถึง Constructor และเมธอด แต่ LinkedHashMap แตกต่างกันในแง่ที่ว่ามันรักษาลำดับของการแทรกของรายการในแผนที่ โครงสร้างข้อมูลที่ใช้โดย LinkedHashMap เพื่อจัดเก็บแผนที่คือ รายการที่เชื่อมโยง และ ตารางแฮช.

นอกเหนือจากวิธีการที่สืบทอดโดย HashMap, LinkedHashMap แนะนำวิธีการใหม่ที่หนึ่ง removeEldestEntry (). วิธีนี้ใช้เพื่อลบรายการที่เก่าที่สุดในแผนที่ ความจุเริ่มต้นของ LinkedHashMap คือ 16 และอัตราส่วนการเติมเริ่มต้นคือ 0.75 ซึ่งคล้ายกับคลาส HashMap

  1. ความแตกต่างที่สำคัญที่สุดคือลำดับการแทรกของ HashMap คือ ไม่ได้เก็บรักษาไว้ ในขณะที่ลำดับการแทรกของ LinkedHashMap คือ ดอง.
  2. โครงสร้างข้อมูลที่ HashMap ใช้ในการจัดเก็บองค์ประกอบของแผนที่คือ Hashtable. ในทางกลับกันโครงสร้างข้อมูลที่ใช้โดย LinkedHashMap คือ เชื่อมโยงรายการ และ Hashtable.
  3. ชั้น HashMap ขยาย AbstractMap ชั้นเรียนและดำเนินการ แผนที่ อินเตอร์เฟซ. อย่างไรก็ตามคลาส LinkedHashMap เป็นคลาสลูกของ HashMap คลาส i.e. ชั้น LinkedHashMap ขยายคลาส HashMap
  4. คลาส HashMap ถูกนำมาใช้ใน JDK 2.0 รุ่น คลาส LinkedHashMap ถูกนำมาใช้ในภายหลัง JDK 4.0 รุ่น
  5. คลาส LinkedHashMap ที่เปรียบเทียบมีค่าใช้จ่ายมากกว่า HashMap เนื่องจากต้องรักษาลำดับขององค์ประกอบที่แทรกในแผนที่

สรุป:

LinkedHashMap จะต้องใช้เมื่อเรามีความกังวลเกี่ยวกับลำดับขององค์ประกอบที่ใส่เข้าไปในแผนที่