ความแตกต่างระหว่าง HashMap และ LinkedHashMap ใน Java
เนื้อหา
HashMap และ LinkedHashMap เป็นคลาสที่ค่อนข้างคล้ายกันและใช้สำหรับการสร้างแผนที่ คลาส HashMap ขยายคลาส AbstractMap เพื่อใช้ตารางแฮชเพื่อเก็บองค์ประกอบในแผนที่ ชั้น LinkedHashMap รักษารายการในแผนที่ตามลำดับการแทรกของพวกเขา คุณลักษณะที่แยกความแตกต่าง HashMap และ LinkedHashMap จากกันและกันคือ HashMap ไม่รักษาลำดับของรายการที่เก็บไว้ในแผนที่ ในทางกลับกัน, LinkedHashMap ใช้โครงสร้างข้อมูลแบบไฮบริดเพื่อรักษาลำดับของรายการที่แทรกไว้ ในตารางเปรียบเทียบด้านล่างฉันสำรวจความแตกต่างอื่น ๆ ระหว่าง HashMap และ LinkedHashMap เพียงแค่ดู
- แผนภูมิเปรียบเทียบ
- คำนิยาม
- ความแตกต่างที่สำคัญ
- ข้อสรุป
แผนภูมิเปรียบเทียบ
พื้นฐานสำหรับการเปรียบเทียบ | 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 โดยไม่ได้ตั้งใจมันจะแทนที่ค่าก่อนหน้าของคีย์นั้นด้วยค่าใหม่ที่เสนอและจะคืนค่าเดิม หากไม่มีการใช้คีย์ซ้ำและไม่มีการแทนที่คีย์จะส่งคืนค่า 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 ขยาย HashMap ระดับและได้รับการแนะนำในภายหลังเพื่อ HashMap ใน JDK รุ่น 4.0 การเป็นคลาสลูกของคลาส HashMap LinkedHashMap นั้นเหมือนกับคลาส HashMap รวมถึง Constructor และเมธอด แต่ LinkedHashMap แตกต่างกันในแง่ที่ว่ามันรักษาลำดับของการแทรกของรายการในแผนที่ โครงสร้างข้อมูลที่ใช้โดย LinkedHashMap เพื่อจัดเก็บแผนที่คือ รายการที่เชื่อมโยง และ ตารางแฮช. นอกเหนือจากวิธีการที่สืบทอดโดย HashMap, LinkedHashMap แนะนำวิธีการใหม่ที่หนึ่ง removeEldestEntry (). วิธีนี้ใช้เพื่อลบรายการที่เก่าที่สุดในแผนที่ ความจุเริ่มต้นของ LinkedHashMap คือ 16 และอัตราส่วนการเติมเริ่มต้นคือ 0.75 ซึ่งคล้ายกับคลาส HashMap
คำจำกัดความของ LinkedHashMap
- ความแตกต่างที่สำคัญที่สุดคือลำดับการแทรกของ HashMap คือ ไม่ได้เก็บรักษาไว้ ในขณะที่ลำดับการแทรกของ LinkedHashMap คือ ดอง.
- โครงสร้างข้อมูลที่ HashMap ใช้ในการจัดเก็บองค์ประกอบของแผนที่คือ Hashtable. ในทางกลับกันโครงสร้างข้อมูลที่ใช้โดย LinkedHashMap คือ เชื่อมโยงรายการ และ Hashtable.
- ชั้น HashMap ขยาย AbstractMap ชั้นเรียนและดำเนินการ แผนที่ อินเตอร์เฟซ. อย่างไรก็ตามคลาส LinkedHashMap เป็นคลาสลูกของ HashMap คลาส i.e. ชั้น LinkedHashMap ขยายคลาส HashMap
- คลาส HashMap ถูกนำมาใช้ใน JDK 2.0 รุ่น คลาส LinkedHashMap ถูกนำมาใช้ในภายหลัง JDK 4.0 รุ่น
- คลาส LinkedHashMap ที่เปรียบเทียบมีค่าใช้จ่ายมากกว่า HashMap เนื่องจากต้องรักษาลำดับขององค์ประกอบที่แทรกในแผนที่
สรุป:
LinkedHashMap จะต้องใช้เมื่อเรามีความกังวลเกี่ยวกับลำดับขององค์ประกอบที่ใส่เข้าไปในแผนที่