Kiedy robię System.out.println(map)w Javie, otrzymuję niezły wynik w stdout. Jak mogę uzyskać tę samą reprezentację ciągu a Mapw 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
entrySetiterator 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, Mapa gdyby tak było: Mapma 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