开发者学堂课程【Java 高级编程:利用 Iterator 输出 Map 集合】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/20/detail/420
利用 Iterator 输出 Map 集合
对于集合的输出而言,最标准的做法就是利用 Iterator 接口来完成,但是需要明确一点的是在 Map 集合里面并没有一个方法可以直接返回 Iterator 接口对象。
所以这种情况下就必须分析不直接提供 Iterator 接口实例化的方法的原因,下面对Collection 与 Map 集合的存储结构进行一个比较。
发现在 Map 集合里面保存的实际上是一组 Map.Entry 接口对象(里面包装的是 Key 与 Value),所以整个来讲 Map 依然实现的是单值的保存,这样在 Map 集合里面提供有一个方法“public Set Map.Entry<K,V>> entrySet()”
,将全部的Map 集合转为 Set 集合。
经过分析可以发现如果要想使用 Iterator 实现 Map 集合的输出则必须按照如下步骤处理:
利用 Map 接口中提供的 entrySet() 方法将 Map 集合转为 Set集合
利用 Set 接口中的 iterator() 方法将 Set 集合转为 Iterator 接口实例
利用 Iterator 进行迭代输出获取每一组的 Map.Entry 对象,随后通过 getKey() 与getValue() 获取数据。
范例:利用 Iterator 输出 Map 集合
package cn.mldn.demo;
import java.util.HashMap;
import java.util.Iterator;
import java.uti1.Map;
import java.uti1.set;
public class JavaAPIDemo i
public static void main(String[ ] args ) throws Exception {
Map<string,Integer> map = new HashMap<String,Integer>();
map.put( "one", 1);
map.put( "two",2);
Set<Map.Entry<String,Integer>> set = map.entrySet() ; //将Map集合变为Set集合Iterator<Map.Entry<String,Integer>> iter = set.iterator( ) ;
while (iter.hasNext()) i
Map.Entry<String, Integer> me = iter.next() ;
system.out.print1n(me.getKey() + " = " + me.getValue());
}
}
}
虽然 Map 集合本身支持有迭代输出的支持,但是如果从实际的开发来开发来讲,Map 集合最主要的用法在于实现数据的 key 查找操作,另外需要提醒的是,如果现在不使用 Iterator 而使用 foreach 语法输出则也需要将 Map 集合转为 Set 集合。
范例:使用 foreach 输出 Map 集合
package cn.mldn. demo;
import java.util.HashMap;
import java.uti1.Iterator;
import java.util.Map;
import java.util.set;
public class JavaAPIDemo {
public static void main(String[ ] args) throws Exception i
Map<String, Integer> map = new HashMap<String, Integer>();
map.put( "one", 1);
map.put( "two",2);
Set<Map.Entry<string,Integer>> set = map.entrySet() ; //将Map集合变为Set集合
for (Map.Entry<String,_Integer> entry : set) {
system.out.printin(entry.getKey() + " = '" + entry.getvalue());
}
}
}
由于 Map 迭代输出的情况相对较少,所以对于此类的语法应该深入
理解一下,并且一定要灵活掌握。