แนะนำแผนที่
แมปกุญแจกับวัตถุของค่า แผนที่ไม่สามารถมีคีย์ที่ซ้ำกันได้ แต่ละคีย์สามารถแมปกับค่าเดียวได้อย่างมากเท่านั้น อินเทอร์เฟซนี้แทนที่คลาสพจนานุกรมซึ่งเป็นคลาสนามธรรมทั้งหมดไม่ใช่อินเทอร์เฟซ
อินเทอร์เฟซแผนที่มีมุมมองการรวบรวมสามมุมมองที่อนุญาตให้ดูเนื้อหาของแผนที่ในรูปแบบของชุดคีย์ชุดค่าหรือชุดความสัมพันธ์การแมปคีย์-ค่า คำสั่งการทำแผนที่หมายถึงลำดับที่ตัววนซ้ำส่งคืนองค์ประกอบของมันในมุมมองคอลเลกชันของแผนที่ การใช้งานการทำแผนที่บางอย่างรับประกันคำสั่งซื้อของพวกเขาอย่างชัดเจนเช่นคลาส treemap; คนอื่นไม่รับประกันคำสั่งซื้อของพวกเขาเช่นคลาส HASHMAP
หมายเหตุ: ต้องใช้ความระมัดระวังเป็นพิเศษเมื่อใช้วัตถุที่ไม่แน่นอนเป็นปุ่มการแมป เมื่อวัตถุเป็นคีย์ในแผนที่หากค่าของวัตถุมีการเปลี่ยนแปลงในลักษณะที่มีผลต่อการเปรียบเทียบเท่ากับพฤติกรรมของแผนที่จะไม่แน่นอน กรณีพิเศษที่ห้ามนี้คือแผนที่ไม่อนุญาตให้รวมตัวเองเป็นคีย์ แม้ว่าแผนที่จะได้รับอนุญาตให้รวมตัวเองเป็นค่าระวัง: คำจำกัดความของวิธีการเท่ากับและวิธีการแฮชโฟตอนจะไม่ชัดเจนในแผนที่ดังกล่าวอีกต่อไป
คลาสการใช้งานการแมปทั่วไปทั้งหมดควรให้ตัวสร้าง "มาตรฐาน" สองตัว: ตัวสร้างโมฆะ (ไม่มีพารามิเตอร์) สำหรับการสร้างแผนที่เปล่า และตัวสร้างที่มีพารามิเตอร์ประเภทแผนที่เดียวเพื่อสร้างแผนที่ใหม่ที่มีความสัมพันธ์การแมปคีย์-ค่าเดียวกันกับพารามิเตอร์ ในความเป็นจริงตัวสร้างหลังอนุญาตให้ผู้ใช้คัดลอกแผนที่โดยพลการเพื่อสร้างแผนที่ที่เทียบเท่าของคลาสที่ต้องการ แม้ว่าข้อเสนอแนะนี้ไม่สามารถบังคับใช้ได้ (เนื่องจากอินเทอร์เฟซไม่สามารถมีตัวสร้าง) การใช้งานการแมปทั่วไปทั้งหมดใน JDK ตามนั้น
วิธีการ "ทำลาย" ที่มีอยู่ในอินเทอร์เฟซนี้จะปรับเปลี่ยนการแมปของการดำเนินการและหากการแมปนี้ไม่รองรับการดำเนินการวิธีการเหล่านี้จะทำให้เกิดการไม่ใช้งาน ถ้าเป็นเช่นนั้นวิธีการเหล่านี้สามารถ (แต่ไม่ต้องการ) โยน unsupportedoperationException เมื่อการโทรไม่ถูกต้องสำหรับการแมป ตัวอย่างเช่นหากแผนที่ที่ไม่ได้แก้ไขซึ่งมีความสัมพันธ์การแมปคือ "ซ้อนทับ" ว่างเปล่าสามารถโยนข้อยกเว้น (แต่ไม่จำเป็น) เมื่อเรียกใช้เมธอด putall (แผนที่) ไปยังแผนที่
การใช้งานการแมปบางอย่างมีข้อ จำกัด เกี่ยวกับคีย์และค่าที่อาจรวมอยู่ด้วย ตัวอย่างเช่นการใช้งานบางอย่างห้ามคีย์และค่า NULL ส่วนอื่น ๆ มีข้อ จำกัด เกี่ยวกับประเภทของคีย์ของพวกเขา การพยายามแทรกคีย์หรือค่าที่ไม่มีเงื่อนไขจะทำให้เกิดข้อยกเว้นที่ไม่ได้ตรวจสอบซึ่งมักจะเป็น nullpointerexception หรือ classcastexception การพยายามสอบถามว่าคีย์หรือค่าที่ไม่มีเงื่อนไขอาจส่งข้อยกเว้นหรือส่งคืนเท็จ การใช้งานบางอย่างจะแสดงพฤติกรรมในอดีตในขณะที่คนอื่น ๆ จะแสดงหลัง โดยทั่วไปเมื่อพยายามดำเนินการกับคีย์หรือค่าที่ไม่มีเงื่อนไขและการดำเนินการเสร็จสิ้นจะไม่ส่งผลให้องค์ประกอบที่ไม่มีคุณสมบัติถูกแทรกลงในแผนที่อาจมีการโยนข้อยกเว้นหรือการดำเนินการอาจประสบความสำเร็จขึ้นอยู่กับการดำเนินการ ข้อยกเว้นดังกล่าวถูกทำเครื่องหมายว่า "เป็นทางเลือก" ในข้อกำหนดของอินเทอร์เฟซนี้
อินเทอร์เฟซนี้เป็นสมาชิกของกรอบคอลเลกชัน Java
หลายวิธีในอินเทอร์เฟซเฟรมเวิร์กคอลเลกชันถูกกำหนดตามวิธีการเท่ากับ ตัวอย่างเช่นข้อกำหนดของเมธอด containskey (key object) กล่าวว่า: "ส่งคืนจริงถ้าแผนที่นี้มีความสัมพันธ์การแมปสำหรับคีย์ k ที่เป็นไปตาม (key == null? k == null: key.equals (k)) ข้อกำหนดนี้ไม่ควรตีความ: การเรียกใช้ ตัวอย่างเช่นการโทร
คำแนะนำในการใช้งานทั่วไปเป็นโมฆะชัดเจน ()
ลบความสัมพันธ์การแมปทั้งหมดออกจากแผนที่นี้ (การดำเนินการทางเลือก)
บูลีนมีคีย์ (คีย์วัตถุ)
ส่งคืนจริงถ้าแผนที่นี้มีความสัมพันธ์การแมปสำหรับคีย์ที่ระบุ
บูลีนมีค่า (ค่าวัตถุ)
ส่งคืนจริงถ้าแผนที่นี้แผนที่หนึ่งปุ่มขึ้นไปกับค่าที่ระบุ
ตั้งค่า <map.entry <k, v >> entrySet ()
ส่งคืนมุมมองชุดของความสัมพันธ์การแมปที่มีอยู่ในแผนที่นี้
บูลีนเท่ากับ (Object O)
เปรียบเทียบว่าวัตถุที่ระบุเท่ากับแผนที่นี้หรือไม่
V Get (Key Object)
ส่งคืนค่าที่แมปโดยคีย์ที่ระบุ; หากแผนที่นี้ไม่มีความสัมพันธ์การแมปของคีย์ให้ส่งคืนค่า null
int hashcode ()
ส่งคืนค่ารหัสแฮชสำหรับแผนที่นี้
บูลีน isempty ()
ส่งคืนจริงถ้าแผนที่นี้ไม่มีความสัมพันธ์การแมปคีย์-ค่า
ตั้งค่า <k> keyset ()
ส่งคืนมุมมองชุดของคีย์ที่มีอยู่ในแผนที่นี้
V Put (k key, v value)
เชื่อมโยงค่าที่ระบุกับคีย์ที่ระบุในแผนที่นี้ (การดำเนินการทางเลือก)
เป็นโมฆะ putall (แผนที่ <? ขยาย k, ขยาย v> m)
คัดลอกความสัมพันธ์การแมปทั้งหมดจากการแมปที่ระบุลงในแผนที่นี้ (การดำเนินการทางเลือก)
V ลบ (คีย์วัตถุ)
หากมีความสัมพันธ์การแมปสำหรับคีย์มันจะถูกลบออกจากแผนที่นี้ (ไม่บังคับ)
ขนาด int ()
ส่งคืนความสัมพันธ์การทำแผนที่ค่าคีย์ในแผนที่นี้
การรวบรวม <v> ค่า ()
ส่งคืนมุมมองการรวบรวมของค่าที่มีอยู่ในแผนที่นี้
การใช้แผนที่ทั่วไป
1. ประกาศแผนที่:
การคัดลอกรหัสมีดังนี้:
แผนที่แผนที่ = ใหม่ hashmap ();
2. ใส่ค่าลงในแผนที่ หมายเหตุ: แผนที่ถูกเก็บไว้ในรูปแบบของคีย์-ค่าเช่น:
การคัดลอกรหัสมีดังนี้:
map.put ("sa", "dd");
3. ใช้ค่าจากแผนที่:
การคัดลอกรหัสมีดังนี้:
string str = map.get ("sa"). toString,
ผลลัพธ์คือ: str = "dd '
4. วนซ้ำผ่านแผนที่และรับคีย์และค่าจากมัน:
การคัดลอกรหัสมีดังนี้:
แผนที่ m = new hashmap ();
สำหรับ (Object obj: map.keyset ()) {
ค่าวัตถุ = map.get (obj);
-