我已编写了一个简单的函数,可以为我打印,但我想知道是否有更简单的方法。
我基本上正在寻找可以打印键(String
s)和值(String
数组)的内容,就像我在值上调用了Arrays.toString()
一样。
答案 0 :(得分:3)
这个网站有两个有趣的方法:http://www.vineetmanohar.com/2010/05/2-ways-to-convert-java-map-to-string/
第一个(某些代码)将以key = value @ key2 = value2&的格式给出答案。 ...
第二个将为您提供包含信息的XML
答案 1 :(得分:1)
一个老问题,但对于使用像Google Guava这样的核心库的人来说可能很有用。
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);
示例输出:
{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]}
请注意,输出是JDK定义的默认格式化输出。
答案 2 :(得分:0)
我不认为如果没有编写自己的函数,这是可能的,因为Map总是使用自己的toString()方法打印它的值,而对于一个数组,不幸的是它与Arrays.toString()产生的不同。
您可以通过从AbstractMap.toString()复制代码,然后在值为数组时添加特殊处理来覆盖Map实例中的Map.toString()。