且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

java--迭代范型化 HashMap

更新时间:2022-08-13 08:22:59

java.util.HashMap<K,V>

类型参数:
K - 此映射所维护的键的类型
V - 所映射值的类型 

由于HashMap没有实现iterable 接口所以我们不能直接用 迭代for循环 来 迭代 HashMap  。 

Set<Map.Entry<K,V>>

entrySet()
          返回此映射所包含的映射关系的 Set 视图  ,将HashMap中的键值对 映射到类型化Set中,映射后的Set只是一个HashMap的视图,我们不能对视图进行add操作,由于Set实现了Iterable接口 所以可以进行迭代操作。这个方法返回的collection集合的元素类型就是键值对

public static interface Map.Entry<K,V>

映射项(键-值对)。Map.entrySet 方法返回映射的 collection 视图,其中的元素属于此类。获得映射项引用的唯一 方法是通过此 collection 视图的迭代器来实现。这些 Map.Entry 对象 在迭代期间有效;更确切地讲,如果在迭代器返回项之后修改了底层映射,则某些映射项的行为是不确定的,除了通过 setValue 在映射项上执行操作之外。     

 

下面是代码示例:

 HashMap<String, Integer>  map=new  HashMap<String,Integer>();     //定义范型化 HashMap
  int i=1;
  map.put("First", i++) ;
  map.put("Second", i++)  ;
  map.put("Third", i++)  ;
  Set<Map.Entry<String,Integer>> entryset=map.entrySet() ;        //获得HashMap的映射视图      返回一个范型化的 Set对象    Map.Entry<String,Integer>>  就是一个键值对
        
  for(Map.Entry<String, Integer> m:entryset)        //对Set进行迭代操作
  {  
   System.out.println(m.getKey() + " : " +m.getValue() );
  }