在 Collection 接口中,可以使用 iterator()方法为 Iterator 接口实例化,并进行输出操作,但是在 Map 接口中并没有此方法的定义,所以 Map 接口本身是不能直接使用 Iterator 进行输出的。
因为 Map 接口中存放的每一个内容都是一对值,而使用 Iterator 接口输出的时候,每次取出的都实际上是一个完整的对象。
三种方法:
- keySet()
对Map集合遍历,需要先调用keySet()方法将map集合的键转换为set集合,然后遍历set集合通过get()方法通过键找到对应的值
- Set<Map.Entry<K,V>> entrySet()
将Map接口变为Set集合,对set集合进行遍历
到底什么是 Map.Entry 呢?
Map.Entry 本身是一个接口。此接口是定义在 Map 接口内部的,是 Map 的内部接口。
此内部接口使用 static 进行定义, 所以此接口将成为外部接口。
实际上来讲,对于每一个存放到 Map 集合中的 key 和 value 都是将其变为了 Map.Entry 并且将 Map.Entry 保存在了 Map 集合之中。
以上的代码一定要记住,Map 集合中每一个元素都是 Map.Entry 的实例,只有通过 Map.Entry 才能进行 key 和 value 的分离操作。
虽然在 JDK 1.5 之后也可以使用 foreach 完成同样的输出,只是这样的操作基本上不使用。 - Collection values() 将全部的 value 变为 Collection 集合,如果只想遍历值,可以使用此方法,但是很少用