Ánh xạ tới chuỗi trong Java


88

Khi tôi làm System.out.println(map)trong Java, tôi nhận được một đầu ra đẹp trong stdout. Làm cách nào để có được biểu diễn chuỗi tương tự này của a Maptrong một biến mà không can thiệp vào đầu ra chuẩn? Một cái gì đó như thế String mapAsString = Collections.toString(map)nào?

Câu trả lời:


141

Sử dụng Object#toString().

String string = map.toString();

Đó cũng là những gì System.out.println(object)làm được dưới mui xe . Định dạng cho bản đồ được mô tả trong AbstractMap#toString().

Trả về biểu diễn chuỗi của bản đồ này. Biểu diễn chuỗi bao gồm danh sách các ánh xạ khóa-giá trị theo thứ tự được trả về bởi entrySettrình lặp của chế độ xem bản đồ , được đặt trong dấu ngoặc nhọn ("{}"). Các ánh xạ liền kề được phân tách bằng các ký tự "," (dấu phẩy và dấu cách). Mỗi ánh xạ khóa-giá trị được hiển thị dưới dạng khóa, theo sau là dấu bằng ("=") theo sau là giá trị được liên kết. Các khóa và giá trị được chuyển đổi thành chuỗi như bằng cách String.valueOf(Object).


3
Nhấn F3 trên phương thức Map toString () là sai! Đưa bạn đến thẳng Object.toString () - nên suy nghĩ trước khi tham gia F3
Adam

2
@Adam, đó là bởi vì bạn gọi toString () trên giao diện, nơi phương thức này, tất nhiên, không được xác định. IDE của bạn không biết về triển khai thời gian chạy thực tế. Bạn không nên đổ lỗi cho cô ấy.
Victor Dombrovsky

@VictorDombrovsky Bất kỳ IDE nào tốt (ví dụ: IntelliJ, Eclipse, v.v.) đều có thể theo dõi việc triển khai thực tế của một phương thức được xác định trong một giao diện.
bánh xe

@wheeler toString()không được khai báo trong Mapvà nếu có: Mapcó 21 lớp thực thi. Cái nào trong số chúng nên được ưu tiên hơn những cái khác khi việc triển khai thực sự được sử dụng chỉ được biết trong thời gian chạy?
Gerold Broser

Tuy nhiên, các giá trị khóa không được trích dẫn kép, do đó không phải là JSON hợp lệ nếu ai đó cố gắng sử dụng nó dưới dạng JSON
P Satish Patro

11

Bạn cũng có thể sử dụng lớp Tham gia bộ sưu tập google (ổi) nếu bạn muốn tùy chỉnh định dạng in

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.