Petakan ke String di Java

89

Ketika saya melakukannya System.out.println(map)di Java, saya mendapatkan output yang bagus di stdout. Bagaimana saya bisa mendapatkan representasi string yang sama dari a Mapdalam variabel tanpa mencampuri keluaran standar? Sesuatu seperti String mapAsString = Collections.toString(map)?

Dan
sumber

Jawaban:

143

Gunakan Object#toString().

String string = map.toString();

Lagipula itu juga yang System.out.println(object)dilakukan di bawah tenda . Format peta dijelaskan dalam AbstractMap#toString().

Mengembalikan representasi string dari peta ini. Representasi string terdiri dari daftar pemetaan nilai-kunci dalam urutan yang dikembalikan oleh entrySetiterator tampilan peta , diapit oleh tanda kurung ("{}"). Pemetaan yang berdekatan dipisahkan oleh karakter "," (koma dan spasi). Setiap pemetaan nilai kunci dirender sebagai kunci yang diikuti dengan tanda sama dengan ("=") diikuti dengan nilai terkait. Kunci dan nilai diubah menjadi string sebagai oleh String.valueOf(Object).

BalusC
sumber
3
Menekan F3 pada metode Map toString () menyesatkan! Membawa Anda langsung ke Object.toString () - harus berpikir sebelum menggunakan F3
Adam
2
@Adam, itu karena Anda memanggil toString () pada antarmuka, di mana metode ini, tentu saja, tidak ditentukan. IDE Anda tidak tahu tentang implementasi run-time yang sebenarnya. Anda seharusnya tidak menyalahkannya.
Victor Dombrovsky
@VictorDombrovsky Setiap IDE yang setengah layak (misalnya IntelliJ, Eclipse, dll.) Harus dapat melacak implementasi sebenarnya dari metode yang ditentukan dalam antarmuka.
wheeler
@wheeler toString()tidak dideklarasikan Mapdan jika: Mapmemiliki 21 kelas implementasi. Manakah di antara mereka yang harus lebih disukai daripada yang lain ketika implementasi yang benar-benar digunakan hanya diketahui pada waktu proses?
Gerold Broser
Tetapi nilai kunci tidak dikutip ganda, oleh karena itu JSON tidak valid jika seseorang mencoba menggunakannya sebagai JSON
P Satish Patro
11

Anda juga dapat menggunakan kelas Google-collections (guava) Joiner jika Anda ingin menyesuaikan format cetak

Aravind Yarram
sumber