利用Iterator输出Map结合
对于集合的输出而言,最标准的做法就是利用Iterator接口完成,但是需要明确的是,在Map方法中并没有一个方法可以直接返回Iterator的接口对象,这种情况下就必须分析不直接提供Iterator操作方法的原因,下面对Collection与Map集合的存储结构进行比较处理。
发现在Map集合里面保存的实际上是一组Map.Entry接口对象(里面包装的是Key与Value),所以整个来讲Map依然实现的是单值的保存,这样在Map集合里面提供有一个方法:
- 将全部的Map集合转为Set集合:Set<Map.Entry<K,V>> entrySet();
经过分析可以发现,如果想使用Iterator实现Map集合的输出,则必须按照如下步骤处理:
- 利用Map接口中提供的entrySet()方法将Map集合转为Set集合
- 利用Set集合中的Iterator方法将Set集合转为Iterator接口实例
- 利用Iterator进行迭代输出,获取每一组的Map.Entry对象,随后通过getKey()与getValue()获取数据
范例:利用Iterator输出Map集合
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
public class MapDemo {
public static void main(String[] args) {
Map <String,Integer> hashMap = new HashMap<String,Integer>();
hashMap.put("one",1);
hashMap.put("two",2);
hashMap.put("three",3);
//将Map集合变为Set集合,传输的对象变为Map.Entry,Map.Entry的类型是String,Integer
Set<Map.Entry<String,Integer>> set= hashMap.entrySet();
Iterator<Map.Entry<String,Integer>> iterator= set.iterator(); //获取Iterator接口对象
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
}
}
one=1
two=2
three=3
虽然Map集合本身支持迭代输出,但是从实际的开发来讲,Map主要用来实现数据的Key的查找操作,如果不使用Iterator而使用forEach输出也需要转换成set集合。