- package cn.itheima;
- import java.util.HashMap;
- import java.util.Iterator;
- import java.util.Map;
- import java.util.Map.Entry;
- import java.util.Set;
- public class IteratorMap {
-
- public static void main(String[] args) {
- Map<Integer,String> map = new HashMap<Integer,String>();
- map.put(1, "冠军");
- map.put(2, "亚军");
- map.put(3, "季军");
- map.put(4, "皇军");
- map.put(5, "皇协军");
-
- keysetIterator(map);
- System.out.println("-----割了去喂狗---------");
- entrysetIterator(map);
-
- }
-
- /**方法一:首先通过keySet()将map中的key存储到set中
- * 然后使用迭代器遍历set,在遍历set的迭代器内部通过map.get(key) 将value取出来。然后一块打印。
- * 实际上是通过将key存储到set中然后对set的遍历实现的,在遍历set的 同时,使用get()方法取出每个key的value。
- */
- public static void keysetIterator(Map<Integer,String> map){
- Set<Integer> keySet = map.keySet();
- Iterator<Integer> it = keySet.iterator();
- while(it.hasNext()){
- Integer key = it.next();
- String value = map.get(key); //遍历key的同时通过get方法取得value。
- System.out.println("key:"+key+"\t"+"value:"+value);
- }
-
- }
-
- /**方法二:使用Map.Entry类进行访问。
- * JDK1.6对Map.Entry类的解释:映射项(键-值对)。Map.entrySet 方法返回映射的 collection 视图,其中的元素属于此类。
- * 由此可见Map.Entry实际上是将键值对封装成一个元素(映射项),将映射项存储进set进行遍历。Entry本来就是入口的意思嘛。
- * 最终也是借助对set元素的遍历实现的map遍历。
- */
- public static void entrysetIterator(Map<Integer,String> map){
- Set<Entry<Integer,String>> entrySet = map.entrySet();
- Iterator<Entry<Integer, String>> it = entrySet.iterator();
- while(it.hasNext()){
- Entry<Integer, String> entry = it.next();
- Integer key = entry.getKey();
- String value = entry.getValue();
- System.out.println("key:"+key+"\t"+"value:"+value);
- }
- }
- }
- /**
- * 综上所述,其实map的遍历都是通过对set元素的迭代实现的,只不过中间过程不同。
- * keySet方法是将key存储进set,然后通过get()取得value;
- * entrySet方法则是将Entry.Set类型存储进set,然后通过Entry.Set的getKey()和getValue()分别取得key和value。
- */
复制代码 |