我知道要遍历 a Map
,我需要使用该entrySet()
方法,然后Iterator
在结果上使用Set
。我觉得这个问题可能很愚蠢,但是,究竟是如何Map
实现的Iterator
,所以直接使用它是不可能的?据我了解,Map
它不是一个集合,Iterator
而是用于集合。但从逻辑上讲,不Map
也是键值对的集合吗(虽然它没有实现Collection
接口)?
问问题
4724 次
4 回答
9
AFAIK,您不能直接迭代 Map,因为 Map 支持三种类型的迭代,并且没有明确的理由选择其中一种。做同样entrySet().iterator()
的事情可能是合理的,但这不是做出的选择。
于 2012-07-16T15:49:23.297 回答
7
您要迭代条目(键+值)还是仅迭代键或仅迭代值?这就是您获取特定集合并获取迭代器的原因。
由于键/条目是唯一的(不存在重复的元素),因此您可以通过entrySet()
and获得一个集合keySet()
。而且由于值可以有重复项,因此您可以通过获取集合values()
,然后从中获取迭代器。
于 2012-07-16T15:47:52.417 回答
4
Collection 实现了 Iterator,Map 虽然不属于 java.util.Collection
,但仍然在 Collection 框架中考虑。
这就是我用来迭代地图的方法
for (Map.Entry<Integer, Integer> entry : map.entrySet()) {
System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue());
}
于 2012-07-16T15:52:10.737 回答
0
这取决于程序员寻求迭代的价值。要么只是键或值,要么两者兼而有之。基于此,我们可以迭代三个不同的对象。示例:mapObject.keySet().iterator()
; 或mapObject.values().iterator()
;或mapObject.entrySet().iterator()
。唯一要记住的是,当我们遍历values()
集合时,我们不会以任何方式获得相应的键。
于 2020-06-25T14:22:49.970 回答