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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 赵文杰 山林野马   /  2012-5-11 22:12  /  2038 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  用什么方法迭代map中的元素。

7 个回复

倒序浏览
map集合本身没有迭代器,但可以通过其他方法进行迭代,如可以用map集合的keySet方法取得所有的键(其返回值类型为Set集合),再用Set集合的迭代方法迭代所有的键,在迭代的过程中,用map集合的get方法取得键所对应得值。也可以用map的entrySet方法获得一个映射关系的Set集合(集合里的元素为Map.entry类型),再用Set的迭代方法迭代每一个映射关系(即得到每一个Map.entry),然后用Map.entry的getkey和getValue方法得到键和值。
回复 使用道具 举报
第一种方法是:Set<Entry<String,Integre>> set=map.entryset();
第二种方法是:Set set=map.keySet()
两种方法都是获取Map集合的key添加进Set集合中 通过Set集合遍历出来
回复 使用道具 举报
HashMap m = new HashMap();
        m.put("mykey", "Myvalue");
        for(Object obj : m.keySet()){
                String value = (String)m.get(obj);
                System.out.println(obj+"::"+value);
       
        }
可以通过keySet()返回Set,再通过get(Object)查找指定键所映射的值
回复 使用道具 举报
首先Map中存储的是具有映射关系的键值对对象,键和值是一一对应的关系,键是唯一的不可重复,值有可能是重复的。
迭代的方法其一:可以通过键来查找对应其对应的值,所以可以通过返回一个集合来存储Map的所有键,在遍历存储键的这个集合时用键来获取值。所以Map提供了setKey()方法返回集合中键的一个set集合,再用get()方法根据键获取值,这样就可以达到遍历的目的。
迭代的方法其二:因为Map集合中的元素是具有映射的关系键和值,所以可以通过Map中的entrySet()返回一个存储集合元素映射关系的set集合,该set集合中元素的类型是Map.Entry<K,V>,遍历set集合过程中,用Map.Entry<K,V>中的getKey()和getValue()获取映射关系中的键和值,从而就实现了编历Map集合。
回复 使用道具 举报
Map集合中么有迭代器,所以要迭代里面的元素,需要委托有迭代器的集合Set
第一种方式:keySet(), keySet得到的是Map集合中的键,把键存入Set集合,然后通过迭代键,找到值.例如:
                    Set key = map.keySet();
                   for( Iterator it= key . iteratior(); it.hasNext();){
                         String value = map . get( it . next ());        
                   }
                  
第二种方式:entrySet()这种方法是把Map集合中的键值对关系存入Set集合,这个键值关系类似于夫妻之间的结婚证,所以它既不是丈夫类型,也不是妻子类型,它的类型就是
          Map.Entry<Key, Value>,得到这个键值关系后,就可以通过getKey(),和getValue()方法获取到键和值.
               例如: Set<Map.Entry<String , Integer>> set= map.entrySet();
                      for(Iterator it = set .iterator() ; it . hasNext ; ) {
                             Map.Entry<String , Integer> me = it . next();
                             String key = me . getKey();
                             int value  = me .getValue();
                      }
  
回复 使用道具 举报
Map集合中底层存储的是Entity对象,可以用增强的for循环来迭代其中的所有对象:
HashMap<String,String> hashMap = new HashMap<String,String>();
       hashMap.put("1","a");
       hashMap.put("2","b");
       for(Entry<String,String> entity : hashMap.entrySet()){
               System.out.println(entity.getKey());
               System.out.println(entity.getValue());
       }
输出结果为:1,a    2,b
回复 使用道具 举报
还有一种迭代的方式,就是得到keySet对象。用get方法获取元素。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马