1)หากแผนที่ไม่เปลี่ยนรูป:
Collections.emptyMap()
// or, in some cases:
Collections.<String, String>emptyMap()
คุณจะต้องใช้อย่างหลังในบางครั้งเมื่อคอมไพเลอร์ไม่สามารถระบุได้โดยอัตโนมัติว่าต้องการแผนที่ประเภทใด (เรียกว่าการอนุมานประเภท ) ตัวอย่างเช่นพิจารณาวิธีการที่ประกาศเช่นนี้:
public void foobar(Map<String, String> map){ ... }
เมื่อส่งแผนที่ว่างไปยังแผนที่โดยตรงคุณจะต้องมีความชัดเจนเกี่ยวกับประเภท:
foobar(Collections.emptyMap()); // doesn't compile
foobar(Collections.<String, String>emptyMap()); // works fine
2)หากคุณจำเป็นต้องสามารถแก้ไขแผนที่ได้ตัวอย่างเช่น:
new HashMap<String, String>()
(ตามที่tehblanx ชี้ให้เห็น )
ภาคผนวก : หากโครงการของคุณใช้Guavaคุณมีทางเลือกต่อไปนี้:
1)แผนที่ไม่เปลี่ยนรูป:
ImmutableMap.of()
// or:
ImmutableMap.<String, String>of()
จริงอยู่ที่นี่ไม่มีประโยชน์อะไรมากมายเมื่อเทียบกับ Collections.emptyMap()
จริงอยู่ที่ไม่ได้รับประโยชน์ใหญ่ที่นี่เมื่อเทียบกับจาก Javadoc :
แผนที่นี้ทำงานและดำเนินการโดยเปรียบเทียบกับCollections.emptyMap()
และเป็นที่นิยมมากที่สุดสำหรับความสอดคล้องและการบำรุงรักษาของโค้ดของคุณ
2)แผนที่ที่คุณสามารถแก้ไขได้:
Maps.newHashMap()
// or:
Maps.<String, String>newHashMap()
Maps
มีวิธีการโรงงานที่คล้ายกันสำหรับการสร้างอินสแตนซ์ของแผนที่ประเภทอื่น ๆ เช่นTreeMap
หรือLinkedHashMap
หรือ
อัปเดต (2018) : บนJava 9หรือใหม่กว่ารหัสที่สั้นที่สุดสำหรับการสร้างแผนที่ว่างที่ไม่เปลี่ยนรูปคือ:
Map.of()
... ใช้ใหม่วิธีการโรงงานความสะดวกสบายจากJEP 269 😎