2011-09-12 2 views

답변

0

지도가 항상 자신의 toString() 메서드를 사용하여 값을 인쇄하기 때문에 자신의 함수를 코딩하지 않고도 가능하지 않다고 생각합니다. 배열에 대해서는 Arrays.toString()이 생성하는 것과는 다릅니다. .

Map 인스턴스의 Map.toString()을 재정의하려면 AbstractMap.toString()에서 코드를 복사 한 다음 값이 배열 인 경우 특수 처리를 추가하십시오.

1

이전 질문이지만 Google 구아바와 같은 핵심 라이브러리 만 사용하는 사용자에게 유용 할 수 있습니다.

private static <K, V> Map<K, List<V>> asView(Map<K, V[]> map) { 
    // returns a view of the given map so it's considered cheap during construction 
    // may be expensive on multiple re-iterations 
    return transformEntries(map, new EntryTransformer<K, V[], List<V>>() { 
     @Override 
     public List<V> transformEntry(K key, V[] value) { 
      return asList(value); 
     } 
    }); 
    // java 8: return transformEntries(map, (k, v) -> asList(v)); 
} 

... 

final Map<String, String[]> map = ImmutableMap.of(
     "one", new String[] {"a", "b", "c"}, 
     "two", new String[] {"d", "e", "f"}, 
     "three",new String[] {"g", "h", "i"} 
); 
final Map<String, List<String>> view = asView(map); 
System.out.println(map); 
System.out.println(view); 

샘플 출력 : 출력이 기본 형식의 출력을 JDK 정의되어

{one=[Ljava.lang.String;@4a4e79f1, two=[Ljava.lang.String;@6627e353, three=[Ljava.lang.String;@44bd928a} 
{one=[a, b, c], two=[d, e, f], three=[g, h, i]} 

참고.

관련 문제