ความแตกต่างระหว่าง HashMap และ LinkedHashMap (พร้อมตาราง)

สารบัญ:

Anonim

Java เป็นภาษาการเขียนโปรแกรมเชิงคลาสที่ใช้สำหรับการนำคำสั่งไปใช้โดยมีจำนวนการพึ่งพาน้อยที่สุด Map Interface ใน Java แสดงถึงความสัมพันธ์ระหว่างคีย์และค่าของมัน การใช้งานแผนที่หลายกลุ่มจะรักษาส่วนต่อประสานแผนที่

HashMap และ LinkedHashMap เป็นการนำ Map มาใช้ของ Java อย่างแพร่หลาย ความคล้ายคลึงกันระหว่างทั้งสองคือไม่ซิงโครไนซ์ พวกเขามีความคล้ายคลึงกันในการแสดงของพวกเขา แต่อะไรคือความแตกต่างระหว่างทั้งสอง?

HashMap กับ LinkedHashMap

ความแตกต่างระหว่าง HashMap และ LinkedHashMap ก็คือ HashMap จะไม่รักษาลำดับในการป้อนคีย์หรือองค์ประกอบ ในขณะที่ LinkedHashMap จะทำตามลำดับการแทรกคีย์และรักษาลำดับขององค์ประกอบ

HashMap เป็นการนำ Map ไปใช้ของ Java ที่ใช้คลาส AbstractMap และขยายเพื่อช่วยสร้างคอลเลกชันของมรดกที่อยู่ในคลาสเดียวกัน องค์ประกอบที่ป้อนไม่มีลำดับและลำดับที่ป้อนจะไม่ถูกจัดเก็บด้วย

LinkedHashMap เป็นอีกหนึ่งการนำ Map ไปใช้ซึ่งเป็นคลาสย่อยของ HashMap เนื่องจากพวกเขามีลำดับการแทรกคีย์ แอปพลิเคชันของพวกเขาจึงอยู่ในพื้นที่ที่ลำดับของการแทรกและการเข้าถึงมีความสำคัญ พวกเขายังมีหน่วยความจำมากกว่า HashMap

ตารางเปรียบเทียบระหว่าง HashMap และ LinkedHashMap

พารามิเตอร์ของการเปรียบเทียบ

HashMap

LinkedHashMap

ความหมาย

เป็นการใช้งาน Java Map ที่ใช้คลาส AbstractMap และช่วยในการสร้างคอลเลกชันของการสืบทอด นอกจากนี้ยังเป็นประเภทของ Java Map และเป็นคลาสย่อยของ HashMap ที่ใช้ Hashtable และ Linked List of Map
องค์ประกอบ

องค์ประกอบที่ป้อนใน HashMap ไม่เป็นระเบียบ เป็นที่ทราบกันว่าองค์ประกอบอยู่ในลำดับการแทรกคีย์
คำสั่ง

ลำดับที่ป้อนองค์ประกอบไม่ได้รับการเก็บรักษาไว้โดย HashMap เนื่องจากอยู่ในลำดับการแทรกคีย์ ลำดับการเข้าสู่องค์ประกอบจึงถูกรักษาไว้
โครงสร้างข้อมูล

พวกมันถูกจัดเก็บเป็นรายการของบัคเก็ตและนำไปใช้เป็น Hashtable ในส่วนต่อประสานแผนที่ LinkedHashMap มีรายการที่เชื่อมโยงแบบทวีคูณที่ทำงานผ่านรายการทั้งหมดที่จัดเก็บไว้ในนั้น
การดึงข้อมูล

การดึงหรือดำเนินการอื่น ๆ ในรายการที่จัดเก็บไว้ใน HashMap นั้นเป็นเรื่องง่าย การดึง ลบ หรือเพิ่มรายการใน LinkedHashMap นั้นยากกว่าใน HashMap
แอปพลิเคชั่น

ใช้ในสถานที่เพื่อให้สามารถดึงข้อมูลได้ง่ายขึ้นและเพื่อวัตถุประสงค์ทั่วไปอื่นๆ มันถูกนำไปใช้หรือใช้ในสถานที่ที่มีความสำคัญในการแทรกหรือการเข้าถึง เช่นเดียวกับแคช LRU

HashMap คืออะไร?

HashMap คือการนำ Map Implementation ไปใช้และขยายใน AbstractMap เพื่อช่วยสร้างคอลเลกชันของการสืบทอดที่เป็นของคลาสเดียวกัน เป็นคลาสที่อนุญาตให้จัดเก็บคีย์และค่าต่างๆ เพื่อสร้างอินเทอร์เฟซแผนที่

HashMap ไม่ได้ซิงโครไนซ์ นอกจากนี้ยังสามารถเก็บค่า Null ได้ แต่ควรกำหนดคีย์ Null เพียงคีย์เดียวเท่านั้น มันจะไม่ทำงานบนคีย์ null หลายคีย์ ทั้งนี้เป็นเพราะคีย์ที่เก็บไว้ต้องไม่ซ้ำกัน

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

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

LinkedHashMap คืออะไร?

LinkedHashMap เป็นกลุ่มการนำแผนที่ไปใช้ด้วย พวกเขาเป็นกลุ่มย่อยของ HashMap แต่จะขยายและใช้ HashMap เองซึ่งจะขยายไปยัง AbstractMap และจากนั้นไปยังส่วนต่อประสานแผนที่

LinkedHashMap ยังไม่ซิงโครไนซ์หรือเชื่อมโยง แม้ว่าค่าที่ป้อนควรไม่ซ้ำกัน แต่สามารถมีค่า Null ได้มากกว่าหนึ่งค่าในรายการ แต่มีคีย์ Null ได้เพียงคีย์เดียวเท่านั้น

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

สิ่งนี้ถูกมองข้ามและดูแลโดยรายการที่เชื่อมโยงแบบทวีคูณที่ทำงานผ่านรายการทั้งหมด เนื่องจากพวกเขารักษาลำดับ การใช้งานในพื้นที่ที่ลำดับการแทรกและการเข้าถึงจึงมีความสำคัญ

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

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

บทสรุป

HashMap และ LinkedHashMap เป็นการนำ Java ไปใช้ Map สองแบบที่ใช้สำหรับบำรุงรักษา Map Interface แม้ว่าพวกเขาจะมีความคล้ายคลึงกันเล็กน้อย แต่ก็มีความแตกต่างที่สำคัญระหว่างพวกเขาที่ก่อให้เกิดความต้องการของทั้งสองกลุ่ม

HashMap คือการนำ Map ไปใช้และขยาย AbstractMap พวกเขายังมีความเร็วในการดึงข้อมูลที่เร็วขึ้นและการทำงานเช่นการเพิ่มและลบรายการในข้อมูลเหล่านี้ก็เร็วขึ้นเช่นกัน

LinkedHashMap เป็นคลาสย่อยของ HashMap และเป็นการนำ Map ไปใช้และขยาย HashMap เอง องค์ประกอบที่ป้อนจะถูกจัดเก็บตามลำดับที่ป้อนในลำดับการเข้าถึง

ความแตกต่างระหว่าง HashMap และ LinkedHashMap ก็คือ HashMap มีความเร็วในการดึงข้อมูลมากกว่าในขณะที่ LinkedHashMap มีหน่วยความจำมากกว่าเมื่อเปรียบเทียบกับ HashMap

อ้างอิง

ความแตกต่างระหว่าง HashMap และ LinkedHashMap (พร้อมตาราง)