เมื่อฉันทำSystem.out.println(map)
ใน Java ฉันจะได้ผลลัพธ์ที่ดีใน stdout ฉันจะรับการแสดงสตริงเดียวกันนี้ของMap
ตัวแปรโดยไม่เข้าไปยุ่งกับเอาต์พุตมาตรฐานได้อย่างไร บางอย่างเช่นString mapAsString = Collections.toString(map)
?
เมื่อฉันทำSystem.out.println(map)
ใน Java ฉันจะได้ผลลัพธ์ที่ดีใน stdout ฉันจะรับการแสดงสตริงเดียวกันนี้ของMap
ตัวแปรโดยไม่เข้าไปยุ่งกับเอาต์พุตมาตรฐานได้อย่างไร บางอย่างเช่นString mapAsString = Collections.toString(map)
?
คำตอบ:
String string = map.toString();
นั่นคือหลังจากทั้งหมดยังเป็นสิ่งที่System.out.println(object)
ไม่อยู่ภายใต้หมวก AbstractMap#toString()
รูปแบบสำหรับแผนที่อธิบายไว้ใน
ส่งกลับการแสดงสตริงของแผนที่นี้ การแทนค่าสตริงประกอบด้วยรายการการแมปคีย์ - ค่าตามลำดับที่ส่งคืนโดยตัว
entrySet
วนซ้ำของมุมมองของแผนที่ซึ่งอยู่ในวงเล็บปีกกา ("{}") การแมปที่อยู่ติดกันจะคั่นด้วยอักขระ "," (ลูกน้ำและช่องว่าง) การแมปคีย์ - ค่าแต่ละรายการจะแสดงผลเป็นคีย์ตามด้วยเครื่องหมายเท่ากับ ("=") ตามด้วยค่าที่เกี่ยวข้องString.valueOf(Object)
คีย์และค่าจะถูกแปลงเป็นสตริงโดย
toString()
ไม่ได้ประกาศในMap
และถ้าเป็น: Map
มี 21 คลาสที่ใช้งานได้ ข้อใดควรเป็นที่ต้องการมากกว่าตัวอื่น ๆ เมื่อการใช้งานจริงเป็นที่รู้จักในรันไทม์เท่านั้น
คุณยังสามารถใช้ google-collections (guava) คลาส Joiner ได้หากต้องการปรับแต่งรูปแบบการพิมพ์