5

我想知道是否可以在单独的行上打印地图的键和关联值。我是 Java 和地图的新手。当我尝试println在最后一行使用正常打印时,它会打印出花括号内的键和值,并且全部在 1 行。我知道这可能是一个愚蠢的问题,但我已经为此苦苦挣扎了一段时间,并且在网上或我的任何讲义中都没有找到解决方案。这只是我设置的一个类,在我尝试更大规模地实现它之前尝试让它工作。如果我的代码或其他任何内容没有以常规方式出现,请提前抱歉,这是我第一次发布。

import java.util.TreeMap;
public class tester {   
    public static void main(String[] args){
        TreeMap<String, String> dir = new TreeMap<String, String>();
        String key = "b";
        String value = "2";
        String key1 = "a";
        String value2 = "1";
        dir.put(key, value);
        dir.put(key1, value2);
        System.out.println(dir);
    }
}
4

4 回答 4

2

是的,您必须遍历地图并在不同的行上打印键和值。

TreeMap<String, String> dir = new TreeMap<String, String>();

for(Entry<String, String> en: dir.entrySet()) {

    System.out.println(en.getKey());
    System.out.println(en.getValue());
}
于 2012-11-01T00:07:24.167 回答
1

是的...

for (String key : dir.keySet()) {
    System.out.println(key + " = " + dir.get(key));
}

查看MapAPI 以获取更多信息

已从 Mik378 反馈更新

正如 Mik378 所建议的,为了获得更好的性能,您最好使用Map.entrySet使用 keySet 迭代器访问地图值

for(Map.Entry<String, String> entry : dir.entrySet()) {
    System.out.println(entry.getKey() + " = " + entry.getValue());
}
于 2012-11-01T00:08:51.250 回答
1

将最后一行替换为:

for(Map.Entry<String, String> entry : dir.entrySet()) {
   System.out.println(entry);
}

将输出:

a=1
b=2

事实上,Entry'stoString()方法已经是:

public String toString() {
   return key + "=" + value;
}
于 2012-11-01T00:12:19.220 回答
0

使用 lambda 表达式很简单:

propertiesMap.forEach((key, value) -> System.out.printf("%s=%s%n", key, value));
于 2020-08-12T06:56:22.147 回答