以Java打印地图 [英] Pretty-print a Map in Java

查看:139
本文介绍了以Java打印地图的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在寻找一个漂亮的方式来打印一个地图

I am looking for a nice way to pretty-print a Map.

map.toString()给我: {key1 = value1,key2 = value2,key3 = value3}

我想在我的地图条目值更多的自由,并且正在寻找更像这样的东西: key1 =value1,key2 =value2,key3 =value3 code>

I want more freedom in my map entry values and am looking for something more like this: 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();

但我相信有一个更优雅和简洁的方法来做到这一点。

But I am sure there is a more elegant and concise way to do this.

推荐答案

或将你的逻辑放在一个整洁的小班。

Or put your logic into a tidy little class.

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));

注意:您也可以将该逻辑放入实用程序中。

Note: You can also put that logic into a utility method.

这篇关于以Java打印地图的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆