แผนภูมิเปรียบเทียบ
พื้นฐานสำหรับการเปรียบเทียบ | HashMap | LinkedHashMap |
---|---|---|
ขั้นพื้นฐาน | ลำดับการแทรกใน HashMap จะไม่ถูกรักษาไว้ | ลำดับการแทรกถูกสงวนไว้ใน LinkedHashMap |
โครงสร้างข้อมูล | HashMap ใช้ HashTable เพื่อจัดเก็บแผนที่ | LinkedHashMap ใช้ HashTable พร้อมกับ Linked List เพื่อจัดเก็บแผนที่ |
ขยาย / นำไปปฏิบัติ | HashMap ขยาย AbstractMap และใช้อินเทอร์เฟซแผนที่ | LinkedHashMap ขยาย Hashmap |
รุ่น | HashMap เปิดตัวใน JDK 2.0 | LinkedHashMap ถูกนำมาใช้ใน 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
- ความแตกต่างที่สำคัญที่สุดคือลำดับการแทรกของ HashMap จะ ไม่ ถูก รักษาไว้ ในขณะที่ลำดับการแทรกของ LinkedHashMap จะถูก เก็บรักษาไว้
- โครงสร้างข้อมูลที่ HashMap ใช้ในการจัดเก็บองค์ประกอบของแผนที่คือ Hashtable ในทางกลับกันโครงสร้างข้อมูลที่ใช้โดย LinkedHashMap คือ รายการที่เชื่อมโยง และ Hashtable
- คลาส HashMap ขยายคลาส AbstractMap และใช้อินเตอร์เฟส Map อย่างไรก็ตามคลาส LinkedHashMap เป็นคลาสลูกของคลาส HashMap เช่นคลาส LinkedHashMap จะขยายคลาส HashMap
- คลาส HashMap ถูกนำมาใช้ในรุ่น JDK 2.0 คลาส LinkedHashMap ได้รับการแนะนำในภายหลังในรุ่น JDK 4.0
- คลาส LinkedHashMap ที่เปรียบเทียบมีค่าใช้จ่ายมากกว่า HashMap เนื่องจากต้องรักษาลำดับขององค์ประกอบที่แทรกในแผนที่
สรุป:
LinkedHashMap จะต้องใช้เมื่อเรามีความกังวลเกี่ยวกับลำดับขององค์ประกอบที่ใส่เข้าไปในแผนที่