[英]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.