[java] Java로 맵을 인쇄하십시오

를 인쇄하는 좋은 방법을 찾고 있습니다 Map.

map.toString() 나에게 준다 : {key1=value1, key2=value2, key3=value3}

내 맵 항목 값에서 더 많은 자유를 원하고 다음과 같은 것을 찾고 있습니다. key1="value1", key2="value2", key3="value3"

나는이 작은 코드를 썼다 :

StringBuilder sb = new StringBuilder();
Iterator<Entry<String, String>> iter = map.entrySet().iterator();
while (iter.hasNext()) {
    Entry<String, String> entry = iter.next();
    sb.append(entry.getKey());
    sb.append('=').append('"');
    sb.append(entry.getValue());
    sb.append('"');
    if (iter.hasNext()) {
        sb.append(',').append(' ');
    }
}
return sb.toString();

그러나 나는 이것을하기 위해보다 우아하고 간결한 방법이 있다고 확신합니다.



답변

또는 당신의 논리를 깔끔한 작은 수업에 넣으십시오.

public class PrettyPrintingMap<K, V> {
    private Map<K, V> map;

    public PrettyPrintingMap(Map<K, V> map) {
        this.map = map;
    }

    public String toString() {
        StringBuilder sb = new StringBuilder();
        Iterator<Entry<K, V>> iter = map.entrySet().iterator();
        while (iter.hasNext()) {
            Entry<K, V> entry = iter.next();
            sb.append(entry.getKey());
            sb.append('=').append('"');
            sb.append(entry.getValue());
            sb.append('"');
            if (iter.hasNext()) {
                sb.append(',').append(' ');
            }
        }
        return sb.toString();

    }
}

용법:

Map<String, String> myMap = new HashMap<String, String>();

System.out.println(new PrettyPrintingMap<String, String>(myMap));

참고 : 해당 논리를 유틸리티 메소드에 넣을 수도 있습니다.


답변

Arrays.toString(map.entrySet().toArray())


답변

구아바 도서관을 살펴보십시오.

Joiner.MapJoiner mapJoiner = Joiner.on(",").withKeyValueSeparator("=");
System.out.println(mapJoiner.join(map));


답변

구조에 아파치 라이브러리!

MapUtils.debugPrint(System.out, "myMap", map);

필요한 모든 Apache Commons Collections 라이브러리 ( 프로젝트 링크 )

Maven 사용자는이 종속성을 사용하여 라이브러리를 추가 할 수 있습니다.

<dependency>
    <groupId>commons-collections</groupId>
    <artifactId>commons-collections</artifactId>
    <version>3.2.1</version>
</dependency>


답변

간단하고 쉽습니다. JSON 세계에 오신 것을 환영합니다. 사용 구글의 GSON를 :

new Gson().toJson(map)

키가 3 개인지도의 예 :

{"array":[null,"Some string"],"just string":"Yo","number":999}


답변

org.json.JSONObject클래스 패스에 있을 때 나는 :

Map<String, Object> stats = ...;
System.out.println(new JSONObject(stats).toString(2));

(이것은 중첩 될 수있는 목록, 세트 및 맵을 아름답게 들여 쓰기)


답변

Java 8 스트림 사용 :

Map<Object, Object> map = new HashMap<>();

String content = map.entrySet()
                    .stream()
                    .map(e -> e.getKey() + "=\"" + e.getValue() + "\"")
                    .collect(Collectors.joining(", "));

System.out.println(content);