我有点困惑.我正在阅读地图界面.它必须使用集合视图的entrySet()方法来使用迭代器.entrySet()返回一个包含map元素的Set.同样,每个Set元素都是一个Map.Entry对象.怎么可能?因为Set只包含一个字段,而Map.Entry是一个键值对?
地图基本上是一组key => value映射.此外,键是唯一的,值不一定是.键值对封装在Map.Entry对象中.当您遍历地图的条目(=键值对集合)时,entry您可以为每个条目获取密钥entry.getKey()和值entry.getValue().
除了条目集之外,映射还提供了一组键和值集合.例如,在a中Map<String, Date>,您有一组键值对Set<Map.Entry<String, Date>>,键组Set<String>和值集合Collection<Date>.
迭代条目的具体示例:
Map<String, Date> map = new HashMap<String, Date>();
map.put("now", new Date());
map.put("now+", new Date());
for (Map.Entry<String, Date> entry : map.entrySet()) {
String key = entry.getKey();
Date value = entry.getValue();
System.out.println(String.format("%s => %s", key, value));
}
Run Code Online (Sandbox Code Playgroud)
迭代的另一种方法是通过键:
for (String key : map.keySet()) {
Date value = map.get(key);
System.out.println(String.format("%s => %s", key, value));
}
Run Code Online (Sandbox Code Playgroud)
但这效率较低,因为对于每个键,您必须执行查找才能获得值,这与使用直接访问值的条目形成对比.