繁体   English   中英

Java打印我的所有地图键和值

[英]Java Printing all of my maps keys and values

快速问题,它可能是最简单的答案,但我需要打印我的HashMaps内容的文本表示。

到目前为止我的代码是:

public void printAll() {
    Set< String> Names = customersDetails.keySet();
    Collection< CustomerDetails> eachCustomersNames = customersDetails.values();
    for (String eachName : Names) {
        System.out.println(eachName)
    }
    for (CustomerDetails eachCustomer : eachCustomersNames) {
        System.out.println(eachCustomer);
    }
}

但这会产生键列表,然后是值列表,但我需要每行文本来读取类似的内容

鲍勃[例子]

鲍勃是关键,而榜样就是价值。

如果您使用的是Java 8,则可以使用lambda语法和.forEach()如下所示:

customersDetails.forEach((k,v) -> {
    System.out.println(k + "[" + v + "]");
});

其中k是你的密钥, v是与密钥k相关的值。

每个键只映射一个值,因此您可以这样做:

Set < String> Names = customersDetails.keySet();

for (String eachName: Names) {
    System.out.println(eachName + " [" +  customersDetails.get(eachName).toString() + "]")

}

如果您不使用Java 8,只需为每个键打印键和值:

for (String eachName : Names) {
    System.out.println(eachName + " [" + customersDetails.get(eachName) + "]");
}

您可以像这样打印地图:

Map<String, String> customersDetails = new HashMap<>();
for (Map.Entry<String, String> entry : customersDetails.entrySet()) {
    System.out.println(entry.getKey()  + '[' + entry.getValue() + ']');
}

如果您使用的是Java 8,则可以使用:

customersDetails.entrySet().forEach((entry) -> {
    System.out.println(entry.getKey()  + '[' + entry.getValue() + ']');
});

如果您开始处理具有更复杂类型的地图,请考虑使用ReflectionToStringBuilder 在内部,它使用反射来构建对象及其字段的字符串。 它也通过对象图进行递归。

它可能效率不高,但它对调试和打印操作有很大帮助。

您不需要迭代键/值来打印地图,因为HashMap.toString()方法已经非常有效地为您执行此操作(实际上,它是AbstractMap.toString()方法)。

如果你有CustomerDetails类实现toString()方法,那么你只需要:

System.out.println(customerDetails);

这将以您需要的格式打印您的地图。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM