A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 大兵在海边 于 2015-5-1 23:35 编辑

  • 首先,我也个新手,学了才半个月,思路感觉不是很清晰,希望牛人多指点!:#
  • 最近刚刚接触到Map接口,把老师课堂上讲的两种遍历方式自己总结了一下。然后是补了一个小例子。希望对大家有所帮助。
  • 首先是记住以下的方法:
  •       V  get(Objet  key):获取该键对应的值,如果此映射不包含该键的映射关系就返回nul
         Set<K> keySet():获取所有的键,这里返回的是一个由键组成的集合。
          Set<Map.Entry<K,V>> entrySet():这里返回的是键值对集合
    从上面的方法中就可以总结出来两种遍历Map的方式:
             方式1a:先是获取所有的键,这里用Set<K>keyset()方法;
                        b:遍历Set获取每个键
    c:通过键去获取值V get(Object  key)
    例如:Map<String,String> stuMap=new HashMap<String,String>();
                       …….//填充Map
    Set<String> ks=stuMap.keySet();
               Iterator<String> it=ks.iterator();
               While(it.hasNext()){
                  Stringkey=it.next();
                  Stringvalue=stuMap.get(key);
    }
             方式2a:先获取键值对集合,由Set<Map.Entry<K,V>>  entrySet()方法实现
                          b:遍历集合,得到每个键值对的对象
                          c.根据Map.Entry<K,V>提供的getKey()getValue()方法获取每个键和值。
         例如:Map<String, String> stuMap=new HashMap<String,String>();
                       stuMap.put(“001”,”zhangsan”);…….//填充Map
             Set<Map.Entryg<String,String>>ks=stuMap.entrySet();//强类型的。一定注意泛型
              Iterator<Map.Entry<String,String>>it=ks.iterator ();
              //这里的迭代器如果不加泛型,那么
                         //在下面接收it.next()的返回值时要加强转,因为它返回的是Object类型的
              While(it.haNext()){
                       Map.Entry<String,String>  me=it.next();
                    String key=me.getKey();
                  String value=me.getValue();
                  Syso(key+”---”+value);
    }
  • 下面是例子




9 个回复

倒序浏览
  1. import java.util.HashMap;
  2. import java.util.Iterator;
  3. import java.util.Map;
  4. import java.util.Set;
  5. class Demo{
  6.         public static void main(String[] args){
  7.                 Map<String,String> strMap=new HashMap<String,String>();
  8.                 strMap.put("it001","张三");
  9.                 strMap.put("it002","李四");
  10.                 strMap.put("it003","王五");
  11. //方式一
  12.                 /*Set<String> ks=strMap.keySet();
  13.                 Iterator<String> it=ks.iterator();
  14.                 while(it.hasNext()){
  15.                         String key =(String)it.next();
  16.                         String value =strMap.get(key);
  17.                         System.out.println(key+"---"+value);
  18.                 }*/
  19.                 //方式二
  20.                 Set<Map.Entry<String,String>>  kv=strMap.entrySet();
  21.                 Iterator <Map.Entry<String,String>>  it =kv.iterator();       
  22.                 while(it.hasNext()){
  23.                        
  24.                         Map.Entry<String,String> k=it.next();
  25.                         String key=k.getKey();
  26.                         String value=k.getValue();
  27.                         System.out.println(key+"---"+value);
  28.                 }

  29.         }
  30. }
复制代码


回复 使用道具 举报
感谢分享,学习了。
回复 使用道具 举报
给点技术分吧
回复 使用道具 举报
兵哥,不错啊,我才1分的技术分,都不着急,你都有17分了,你还怕啥/
回复 使用道具 举报
sunxiaohong 发表于 2015-5-9 15:32
兵哥,不错啊,我才1分的技术分,都不着急,你都有17分了,你还怕啥/

学到不踏实,心里虚啊
回复 使用道具 举报
确实是这样两种方式, map线程是安全的吗?
回复 使用道具 举报
开到荼靡 发表于 2015-5-9 15:56
确实是这样两种方式, map线程是安全的吗?

HashMap和TreeMap是不安全的
回复 使用道具 举报
大兵在海边 发表于 2015-5-9 15:37
学到不踏实,心里虚啊

比我强多了,,,,你流程快走完了吧?
回复 使用道具 举报
大兵在海边 发表于 2015-5-9 16:16
HashMap和TreeMap是不安全的

HashTable是线程安全的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马