java中Map集合的常用遍历方法及HashMap的应用实例

来源:互联网 发布:discuz cms 编辑:程序博客网 时间:2024/05/21 01:32

HashMap中的
          keySet() 方法
                      返回映射中所包含的键的 set 视图,
                      返回类型为Set 如果只查询HashMap中的所有键,可以用到这个方法。            entrySet() 
                    返回此映射所包含的映射关系(映射关系是指键值对)的 collection 视图,
                   在返回的集合中,每个元素都是一个Map.Entry。
                  与keySet()不同的是,keySet只返回所有的键,
                                                   而entrySet则返回的是键值对,不仅包含键,还包括键的值。         
              所有这里说是“映射(这里指的是Map)所包含的映射关系(键值对关系)”。
             Map.Entry 是什么呢?
                  接口Map.Entry (K指的是键,V指的是值),映射项(键-值对)。
             Map.entrySet 方法返回:
                         映射的 collection 视图,其中的元素属于此类。
             获得映射项引用的 惟一 方法:
                                       就是通过此 collection 视图的迭代器来实现。          
               (登记entry)
第一种:  Map map = new HashMap();  Iterator iter = map.entrySet().iterator();  while (iter.hasNext()) {  Map.Entry entry = (Map.Entry) iter.next();  Object key = entry.getKey();  Object val = entry.getValue();  }  ---------效率高,以后一定要使用此种方式!------------------------第二种:  Map map = new HashMap();  Iterator iter = map.keySet().iterator();  while (iter.hasNext()) {  Object key = iter.next();  Object val = map.get(key);  }遍历啊

----------------------------------------------------------------------------

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(); 

     }


--------------------------------------------------

Map的遍历大体有3种:

1、遍历Map.entrySet():它的每一个元素都是Map.Entry对象,这个对象中,

放着的就是Map中的某一对key-value;

2、遍历Map.keySet():它是Map中key值的集合,我们可以通过遍历这个集合来

读取Map中的元素;

3、遍历Map.values():它是Map中value的集合,我们可以直接通过这个集合遍历

Map中的值,却不能读取key。

[java] view plain copy
  1. package com.sort;  
  2.   
  3. import java.util.HashMap;  
  4. import java.util.Iterator;  
  5. import java.util.Map;  
  6. import java.util.Set;  
  7. import java.util.Map.Entry;  
  8.   
  9. /** 
  10.  * map集合和set集合一样是无序的 
  11.  * map集合遍历的几种常用方法 
  12.  * @author Owner 
  13.  * 
  14.  */  
  15. public class MapTest5 {  
  16.   
  17.     public static void main(String[] args) {  
  18.           
  19.         Map<String, String> map = new HashMap<String, String>();  
  20.           
  21.         map.put("a""zhangsan");  
  22.         map.put("b""lisi");  
  23.         map.put("c""wangwu");  
  24.           
  25. //      System.out.println(map);  
  26.           
  27.         /** 
  28.          * 方法一遍历map 
  29.          */  
  30.         Set<String> keySet = map.keySet();  
  31.           
  32.         for(Iterator<String> iterator = keySet.iterator();iterator.hasNext();){  
  33.             String key = iterator.next();  
  34.               
  35.             String value = map.get(key);  
  36.               
  37.             System.out.println(key+"="+value);  
  38.         }  
  39.           
  40.         System.out.println("**********************");  
  41.           
  42.         /** 
  43.          * 方法二遍历map 
  44.          */  
  45.         for(String key : map.keySet()){  
  46.             System.out.println(key+"="+map.get(key));  
  47.         }  
  48.           
  49.         System.out.println("**********************");  
  50.           
  51.         /** 
  52.          * 方法三遍历map,推荐使用该方法遍历map集合,尤其是容量大时 
  53.          */  
  54.         for(Map.Entry<String, String> entry : map.entrySet()){  
  55.             System.out.println(entry.getKey()+"="+entry.getValue());  
  56.         }  
  57.           
  58.           
  59.         System.out.println("**********************");  
  60.           
  61.         /** 
  62.          * 方法四遍历map 
  63.          */  
  64.         Set<Entry<String, String>> entrySet = map.entrySet();  
  65.           
  66.         for(Iterator<Map.Entry<String, String>> iterator = entrySet.iterator();iterator.hasNext();){  
  67.             Map.Entry<String, String> entry = iterator.next();  
  68.               
  69.             System.out.println(entry.getKey()+"="+entry.getValue());  
  70.         }  
  71.           
  72.           
  73.         System.out.println("**********************");  
  74.         /** 
  75.          * 方法五,这种方法遍历的是所有的值 
  76.          */  
  77.         for(String value : map.values()){  
  78.             System.out.println(value);  
  79.         }  
  80.           
  81.     }  
  82. }  

**********方法一************
b=lisi
c=wangwu
a=zhangsan
******方法二遍历****************
b=lisi
c=wangwu
a=zhangsan
**********方法三遍历************
b=lisi
c=wangwu
a=zhangsan
**********方法四遍历************
b=lisi
c=wangwu
a=zhangsan
**********方法五************
lisi
wangwu
zhangsan

Map中元素存放是无序的

HashMap注意事项:

1,HashMap底层维护一个数组,我们向HashMap中所放置的对象实际上是存储在该数组当中;

2,当向HashMap中put一对键值时,它会根据key的hashCode值计算出一个位置,该位置就是此对象准备往数组中存放的位置。


HashMap应用举例:控制台输入一句英语,简单统计各个单词出现的次数

[java] view plain copy
  1. package com.sort;  
  2.   
  3. import java.util.HashMap;  
  4. import java.util.Iterator;  
  5. import java.util.Map;  
  6. import java.util.Scanner;  
  7. import java.util.Set;  
  8.   
  9. /** 
  10.  * 统计一句英语的简单统计各个单词出现的次数 
  11.  *  
  12.  * @author Owner 
  13.  *  
  14.  */  
  15. public class MapTest3 {  
  16.   
  17.     public static void main(String[] args) {  
  18.           
  19.         Scanner sc = new Scanner(System.in);  
  20.           
  21.         System.out.println("请输入一句英语,单词间用空格隔开:");  
  22.           
  23.         String sentence = sc.nextLine();  
  24.           
  25.         String[] arr = sentence.split(" ");  
  26.           
  27.         // 键代表着单词,值代表着次数  map.put
  28.         Map<String, Integer> map = new HashMap<String, Integer>();  
  29.         for (int i = 0; i < arr.length; i++) {  
  30.             if (!map.containsKey(arr[i])) {  
  31.                 map.put(arr[i], 1);  
  32.             } else {  
  33.                 // 说明map中,存在该元素  
  34.                 int num = map.get(arr[i]);  
  35.                 map.put(arr[i], ++num);  
  36.             }  
  37.         }  
  38.           
  39.         System.out.println("统计单词出现的个数,结果如下:");  
  40.   
  41.         Set<String> set = map.keySet();  
  42.   
  43.         for (Iterator<String> iterator = set.iterator(); iterator.hasNext();) {  
  44.             String key = iterator.next();  
  45.   
  46.             Integer value = map.get(key);  
  47.   
  48.             System.out.println(key + "=" + value);  
  49.         }  
  50.     }  
  51. }  


输出结果:

请输入一句英语,单词间用空格隔开:
I love U China I am pround to be a Chinese
统计单词出现的个数,结果如下:
to=1
U=1
love=1
am=1
a=1
pround=1
Chinese=1
I=2
China=1

be=1


http://blog.csdn.net/shenshen123jun/article/details/9074523

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 卖家把没发货的填写了单号怎么办 买的人民币白银亏了好多钱怎么办 带控制线的三相四线开关怎么办 覆膜除尘布袋风拉不动怎么办 家里装修把暖气管道打破了怎么办 冷水管与热水管接错了怎么办 磨砂皮的鞋子打湿变硬了怎么办 等离子淡化热处理层渗不够厚怎么办 寄快递快递公司把东西弄坏了怎么办 寄美国的快递客人拒绝清关怎么办 国际e邮宝几天没物流信息了怎么办 石家庄小学网上报名填错了怎么办 去医院看病不知道挂什么科怎么办 深水井深水泵埋了2米怎么办 请问我捡的手机不是我的指纹怎么办 宝宝把塑料子弹塞到了鼻子里怎么办 坐便池上面的小孔不出水怎么办 还没离职已经找好工作怎么办 因火车晚点而耽误下趟火车怎么办 在广州坐的士丢了东西怎么办 找兼职的话他要求交押金怎么办 08vip不给提现了怎么办 点击订阅号所收到内容字太大怎么办 我的小叶栀子花老是黄叶该怎么办? 联币金融倒闭了我投资的钱怎么办 新单位交养老保险不接收档案怎么办 高铁发车十小时没赶上怎么办 饿了么被阿里收购员工怎么办? 爱疯4s密码忘了怎么办 研究生论文盲审一直不出结果怎么办 查重报告有疑似剽窃观点怎么办 成绩考的不好怎么办读技校有用吗 孩子大学挂科太多家长应该怎么办 中专升大专的入学考没考上怎么办 小孩摔跤额头出了个包怎么办 小孩摔跤后脑勺出了个包怎么办 结婚后疏于关心老婆寒心了怎么办 江苏取消小高考高二学生怎么办 上海学而思家长陪读听不懂怎么办 高考报名的电话号码填错了怎么办 高考报名用的电话号码变换了怎么办