java hashmap键迭代
有没有办法迭代java Hashmap并打印出作为Hashmap一部分的每个键的所有值?
使用for-each循环 ,使用Map.keySet()
迭代键,使用Map.values()
迭代值,使用Map.entrySet()
迭代键/值对。
请注意,所有这些都是用于获取它们的地图的直接视图,因此您对三者中的任何一个或地图本身所做的任何修改也将反映给所有其他人。
是的,你通过获取地图的entrySet()
来做到这一点。 例如:
Map map = new HashMap(); // ... for (Map.Entry entry : map.entrySet()) { System.out.println("key=" + entry.getKey() + ", value=" + entry.getValue()); }
(当然,将String
和Object
替换为您的特定Map
具有的类型 – 上面的代码只是一个示例)。
for (Map.Entry e : map.entrySet()) { T key = e.getKey(); U value = e.getValue(); . . . }
此外,如果使用LinkedHashMap作为实现,则将按插入键/值对的顺序进行迭代。 如果这不重要,请使用HashMap。
public class abcd { public static void main(String[] args) { Map testMap = new HashMap(); testMap.put(10, "a"); testMap.put(20, "b"); testMap.put(30, "c"); testMap.put(40, "d"); for (Entry entry : testMap.entrySet()) { Integer key=entry.getKey(); String value=entry.getValue(); } } }
hashmap.keySet().iterator()
使用for
循环来迭代它。
然后使用hashmap.get(item)
获取单个值,
或者,只需使用entrySet()
获取值的迭代器。
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; });