คำอธิบายโดยละเอียดเกี่ยวกับ Java Hashmap, Treemap และ LinkedHashMap
ในระหว่างการสัมภาษณ์เมื่อเช้านี้ฉันถามเกี่ยวกับสิ่งที่เกี่ยวข้องกับ Java และแผนที่ ฉันจำเนื้อหาที่เกี่ยวข้องกับ HashMap และ Treemap ได้อย่างผิด ๆ เมื่อฉันกลับมาฉันลองการสาธิตสองสามครั้งเพื่อทำความเข้าใจ
แผนที่แพ็คเกจ; นำเข้า Java.util.*; คลาสสาธารณะ hashmaps {โมฆะคงที่สาธารณะหลัก (สตริง [] args) {แผนที่แผนที่ = new hashmap (); map.put ("A", "AAA"); map.put ("B", "BBB"); map.put ("C", "CCC"); map.put ("d", "ddd"); Iterator iterator = map.keyset (). iterator (); ในขณะที่ (iterator.hasnext ()) {object key = iterator.next (); System.out.println ("map.get (คีย์) คือ:" + map.get (key)); } hashtable tab = new hashtable (); tab.put ("A", "AAA"); tab.put ("B", "BBB"); tab.put ("C", "CCC"); tab.put ("d", "ddd"); Iterator Iterator_1 = tab.keyset (). iterator (); ในขณะที่ (iterator_1.hasnext ()) {object key = iterator_1.next (); System.out.println ("tab.get (คีย์) คือ:" + tab.get (คีย์)); } treemap tmp = treemap ใหม่ (); tmp.put ("A", "AAA"); tmp.put ("b", "bbb"); tmp.put ("C", "CCC"); tmp.put ("d", "ddd"); tmp.put ("a", "aba"); ตัววนซ้ำ iterator_2 = tmp.keyset (). iterator (); ในขณะที่ (iterator_2.hasnext ()) {object key = iterator_2.next (); System.out.println ("tmp.get (คีย์) คือ:" + tmp.get (คีย์)); } linkedHashMap <สตริง, จำนวนเต็ม> linkedHashMap = ใหม่ linkedHashMap <สตริง, จำนวนเต็ม> (); linkedhashmap.put ("dasdsa", 1); LinkedHashMap.put ("GDSF", 2); linkedhashmap.put ("texvdfd", 3); linkedhashmap.put ("bdada", 4); LinkedHashMap.put ("GDSF", 3); สำหรับ (สตริงอุณหภูมิ: linkedhashmap.keyset ()) {system.out.println (temp); - แผนที่แตกต่างจากรายการ ชั้นพื้นฐานใช้รูปแบบของคู่คีย์-ค่าเพื่อจัดเก็บข้อมูล map.entry เป็นส่วนย่อยภายใน การใช้งานที่แตกต่างกันของแผนที่มีรูปแบบดัชนีที่แตกต่างกันสำหรับคู่คีย์-ค่า
HashMap ใช้ฟังก์ชันแฮชเพื่อดัชนีค่าคีย์ เราไม่สามารถกำหนดลำดับของค่าคีย์สุดท้ายได้
อย่างไรก็ตามมีปรากฏการณ์ที่น่าสนใจว่าเมื่อใช้จำนวนเต็มเป็นคู่คีย์-ค่าเมื่อตัวเลขเป็นตัวเลข 1 หลักค่าคีย์จะถูกจัดเรียงจากขนาดเล็กถึงใหญ่และเมื่อตัวเลขเป็นตัวเลขสองหลักอาจมีปัญหา
มีต้นไม้ที่สมดุลภายใน Treemap เพื่อเก็บดัชนีค่าคีย์ Treemap เรียงลำดับค่าคีย์ตามฟังก์ชั่นการเปรียบเทียบ ฉันคาดเดาว่าอาจมี avltree ภายใน
LinkedHashMap มีคุณสมบัติที่คู่คีย์-ค่าถูกจัดเรียงตามลำดับของการแทรก หากมีการแทรกซ้ำ ๆ พวกเขาจะถูกบันทึกไว้ในลำดับของการแทรกครั้งแรก หนึ่งในคำพูดบนอินเทอร์เน็ตคือมีแฮชสองตัวอยู่ในโครงสร้าง
หนึ่งแก้ปัญหาการสั่งซื้ออื่น ๆ แก้ปัญหาการจัดเก็บความถูกต้องจะได้รับการยืนยัน
HashMap และ Treemap เป็นโครงสร้างแผนที่ที่ใช้กันมากที่สุดสองโครงสร้าง โดยทั่วไปแล้ว HASHMAP นั้นค่อนข้างมีประสิทธิภาพและพบได้บ่อยที่สุด เฉพาะในกรณีที่เราจำเป็นต้องสั่งซื้อด้วยค่าคีย์เราจะใช้ treemap
ขอบคุณสำหรับการอ่านฉันหวังว่ามันจะช่วยคุณได้ ขอบคุณสำหรับการสนับสนุนเว็บไซต์นี้!