Java HashMap键迭代

18

有没有办法遍历Java HashMap并打印出其中所有键对应的值?

7个回答

25

你可以通过获取map的entrySet()来做到这一点。例如:

Map<String, Object> map = new HashMap<String, Object>();

// ...

for (Map.Entry<String, Object> entry : map.entrySet()) {
    System.out.println("key=" + entry.getKey() + ", value=" + entry.getValue());
}

当然,将StringObject替换为您特定的Map所具有的类型-上面的代码仅是一个示例。


16

使用 for-each 循环,对于迭代键,使用 Map.keySet(),对于迭代值,使用Map.values(),对于迭代键/值对,使用 Map.entrySet()

请注意,所有这些都是对用于获取它们的地图的直接视图,因此您对其中任何一个、三个或地图本身所做的任何修改都会反映到所有其他对象中。


4
public class abcd {
    public static void main(String[] args)
    {
       Map<Integer, String> testMap = new HashMap<Integer, String>();
        testMap.put(10, "a");
        testMap.put(20, "b");
        testMap.put(30, "c");
        testMap.put(40, "d");
        for (Entry<Integer, String> entry : testMap.entrySet()) {
            Integer key=entry.getKey();
            String value=entry.getValue();
        }
    }
}

2
for (Map.Entry<T,U> e : map.entrySet())
{
    T key = e.getKey();
    U value = e.getValue();
    .
    .
    .
}

此外,如果您使用LinkedHashMap作为实现方式,迭代时将按照键/值对插入的顺序进行。如果这不重要,则使用HashMap。


1

Keep it simple, please:

HashMap<String,String> HeyHoLetsGo = new HashMap();

HeyHoLetsGo.put("I", "wanna be your dog");
HeyHoLetsGo.put("Sheena", "is a punk rocker");
HeyHoLetsGo.put("Rudie", "can't fail");

for ( String theKey : HeyHoLetsGo.keySet() ){
    System.out.println(theKey + " "+HeyHoLetsGo.get(theKey));
}

1
hashmap.keySet().iterator()

使用 for 循环来迭代它。
然后使用 hashmap.get(item) 来获取单个值,
或者只需使用 entrySet() 获取值的迭代器。

1
或者,根据 ping 所指的“值”的含义,“hashmap.values().iterator()”。 - Mark Peters

0
Java 8新增了Map.forEach的方法,你可以像这样使用它:
map.forEach((k, v) -> System.out.println("key=" + k + " value=" + v));

如果你想更新值,也可以使用replaceAll

map.replaceAll((k, v) -> {
    int newValue = v + 1;
    System.out.println("key=" + k + " value=" + v + " new value=" + newValue);
    return newValue;
});

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接