如何簡便的遍歷Map
你是否已經對每次從Map中取得關鍵字然后再取得相應的值感覺厭倦?
?
使用JDK5的增強for循環,來遍歷Map,簡單多了,比Map.Entry還方便。
看代碼:
- for?(String?key?:?map.keySet())?{??
- ????System.out.println(key?+?"?:?"?+?map.get(key));??
- }??
?
?
?
最羅嗦遍歷Map的方法:
?
- Set?keys?=?map.keySet(?);??
- if(keys?!=?null)?{??
- Iterator?iterator?=?keys.iterator(?);??
- while(iterator.hasNext(?))?{??
- Object?key?=?iterator.next(?);??
- Object?value?=?map.get(key);??
- ;....??
- ;}??
- ???
?
?
使用Map.Entry類,你可以得到在同一時間得到所有的信息。
Map類提供了一個稱為entrySet()的方法,這個方法返回一個Map.Entry實例化后的 對象集。接著,Map.Entry類提供了一個getKey()方法和一個getValue()方法,因此,上面的代碼可以被組織得更符合邏輯。
Map.Entry同時也提供了一個setValue()方法
?
?
?
- private?void?a(){??
- ????Map<String,?String>?values?=?new?HashMap();??
- ????for?(Map.Entry?entry?:?values.entrySet())?{??
- ????????Object?key?=?entry.getKey(?);??
- ????????Object?value?=?entry.getValue();??
- ????}??
- } ?
?Map是java中的接口,Map.Entry是Map的一個內部接口。
?????????Map提供了一些常用方法,如keySet()、entrySet()等方法,keySet()方法返回值是Map中key值的集合;entrySet()的返回值也是返回一個Set集合,此集合的類型為Map.Entry。
?????????Map.Entry是Map聲明的一個內部接口,此接口為泛型,定義為Entry<K,V>。它表示Map中的一個實體(一個key-value對)。接口中有getKey(),getValue方法。
?????????
????????由以上可以得出,遍歷Map的常用方法:
???????1.??Map?map?=?new?HashMap();
???????????Irerator?iterator?=?map.entrySet().iterator();
???????????while(iterator.hasNext())?{
???????????????????Map.Entry?entry?=?iterator.next();
???????????????????Object?key?=?entry.getKey();
???????????????????//
???????????}
???????2.Map?map?=?new?HashMap();?
???????????Set??keySet=?map.keySet();
???????????Irerator?iterator?=?keySet.iterator;
???????????while(iterator.hasNext())?{
???????????????????Object?key?=?iterator.next();
???????????????????Object?value?=?map.get(key);
???????????????????//
???????????}
?
???????另外,還有一種遍歷方法是,單純的遍歷value值,Map有一個values方法,返回的是value的Collection集合。通過遍歷collection也可以遍歷value,如
??????Map?map?=?new?HashMap();
??????Collection?c?=?map.values();
??????Iterator?iterator?=?c.iterator();
??????while(iterator.hasNext())?{
?????????????Object?value?=?iterator.next();?
?????}