Kiedy robię System.out.println(map)
w Javie, otrzymuję niezły wynik w stdout. Jak mogę uzyskać tę samą reprezentację ciągu a Map
w zmiennej bez mieszania się w standardowe wyjście? Coś jak String mapAsString = Collections.toString(map)
?
Odpowiedzi:
Użyj Object#toString()
.
String string = map.toString();
To przecież też to, co System.out.println(object)
dzieje się pod maskami . Format map opisano w AbstractMap#toString()
.
Zwraca ciąg znaków reprezentujący tę mapę. Reprezentacja ciągu składa się z listy odwzorowań klucz-wartość w kolejności zwracanej przez
entrySet
iterator widoku mapy , ujętej w nawiasy klamrowe („{}”). Sąsiednie odwzorowania są oddzielone znakami „,” (przecinek i spacja). Każde mapowanie klucz-wartość jest renderowane jako klucz, po którym następuje znak równości („=”), po którym następuje skojarzona z nim wartość. Klucze i wartości są konwertowane na ciągi jak przezString.valueOf(Object)
.
toString()
nie jest zadeklarowany w, Map
a gdyby tak było: Map
ma 21 klas implementujących. Który z nich powinien być preferowany nad innymi, gdy faktycznie używana implementacja jest znana tylko w czasie wykonywania?
Możesz także użyć klasy Joiner kolekcji Google (guawa), jeśli chcesz dostosować format wydruku