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

时间:2017-05-01 13:11:29

标签: java hashmap

快速问题及其可能是最简单的答案,但我需要打印我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是关键,例子是价值。

6 个答案:

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

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