를 인쇄하는 좋은 방법을 찾고 있습니다 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);