แนะนำ, 2024

ตัวเลือกของบรรณาธิการ

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

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

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

พื้นฐานสำหรับการเปรียบเทียบ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.println (hm); / * output * / {Vijay = 250, Jonny = 150, Ajay = 275, Jordan = 200} 

ในรหัสข้างต้นคุณสามารถเห็นฉันสร้างวัตถุของ HashMap และเพิ่มรายการโดยใช้ put method และเมื่อฉันพิมพ์วัตถุ 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

ความแตกต่างที่สำคัญระหว่าง HashMap และ LinkedHashMap ใน Java

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

สรุป:

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

Top