快速问题及其可能是最简单的答案,但我需要打印我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);
}
}
但这导致了键列表,然后是值列表,但我需要每行文本来读取类似
的内容鲍勃[例子]
Bob是关键,例子是价值。
答案 0 :(得分:2)
如果你正在使用Java 8,你可以利用lambda语法和.forEach()
这样:
customersDetails.forEach((k,v) -> {
System.out.println(k + "[" + v + "]");
});
k
是您的密钥,v
是与密钥k
绑定的值。
答案 1 :(得分:0)
每个键只映射一个值,所以你可以这样做:
Set < String> Names = customersDetails.keySet();
for (String eachName: Names) {
System.out.println(eachName + " [" + customersDetails.get(eachName).toString() + "]")
}
答案 2 :(得分:0)
如果您不使用Java 8,只需为每个键打印键和值:
for (String eachName : Names) {
System.out.println(eachName + " [" + customersDetails.get(eachName) + "]");
}
答案 3 :(得分:0)
您可以像这样打印地图:
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() + ']');
});
答案 4 :(得分:0)
如果您开始处理更复杂类型的地图,请考虑使用ReflectionToStringBuilder。在内部,它使用反射来构建对象及其字段的字符串。它也通过对象图进行递归。
它可能效率不高,但它对调试和打印操作有很大帮助。
答案 5 :(得分:0)
您无需迭代键/值以打印地图,因为HashMap.toString()
方法已经非常有效地为您执行此操作(实际上,它是AbstractMap.toString()
方法)。
如果您的CustomerDetails
课程实施了toString()
方法,那么您只需要这样做:
System.out.println(customerDetails);
这将以您需要的格式打印您的地图。