Java에서 문자열에 매핑


88

System.out.println(map)Java로 할 때 stdout에서 멋진 출력을 얻습니다. Map표준 출력을 방해하지 않고 변수에서 동일한 문자열 표현을 어떻게 얻을 수 있습니까? 같은 거 String mapAsString = Collections.toString(map)?

답변:


141

사용 Object#toString().

String string = map.toString();

즉 모든 또한 무엇 이후의 System.out.println(object)수행 후드 아래에 . 지도 형식은에 설명되어 AbstractMap#toString()있습니다.

이지도의 문자열 표현을 반환합니다. 문자열 표현은지도의 entrySet보기 반복자가 반환하는 순서대로 중괄호 ( "{}")로 묶인 키-값 매핑 목록으로 구성됩니다 . 인접한 매핑은 ","(쉼표 및 공백) 문자로 구분됩니다. 각 키-값 매핑은 키, 등호 ( "="), 관련 값으로 렌더링됩니다. 키와 값은에서와 같이 문자열로 변환됩니다 String.valueOf(Object).


3
Map toString () 메서드에서 F3 키를 누르면 잘못된 것입니다! Object.toString ()으로 바로 이동합니다-F3에 참여하기 전에 생각해야합니다
Adam

2
@Adam은 인터페이스에서 toString ()을 호출하기 때문입니다. 물론이 메서드는 정의되지 않았습니다. IDE는 실제 런타임 구현에 대해 알지 못합니다. 그녀를 비난해서는 안됩니다.
Victor Dombrovsky

@VictorDombrovsky 반쯤 괜찮은 IDE (예 : IntelliJ, Eclipse 등)는 인터페이스에 정의 된 메서드의 실제 구현을 추적 할 수 있어야합니다.
wheeler

@wheeler toString()는 선언되지 않았고 Map만약 그렇다면 : Map21 개의 구현 클래스가 있습니다. 실제로 사용되는 구현이 런타임에만 알려진 경우 다른 것보다 선호해야하는 것은 무엇입니까?
Gerold Broser

그러나 키 값은 따라서 유효한 JSON 누군가의 시도는 JSON으로 사용하는 경우, 비록 이중 인용되지 않습니다
P 사티 Patro

11

인쇄 형식을 사용자 정의하려면 google-collections (guava) Joiner 클래스를 사용할 수도 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.