黑马程序员技术交流社区

标题: 集合map [打印本页]

作者: 赵文杰    时间: 2012-5-11 22:12
标题: 集合map
  用什么方法迭代map中的元素。
作者: 袁培育    时间: 2012-5-12 08:56
map集合本身没有迭代器,但可以通过其他方法进行迭代,如可以用map集合的keySet方法取得所有的键(其返回值类型为Set集合),再用Set集合的迭代方法迭代所有的键,在迭代的过程中,用map集合的get方法取得键所对应得值。也可以用map的entrySet方法获得一个映射关系的Set集合(集合里的元素为Map.entry类型),再用Set的迭代方法迭代每一个映射关系(即得到每一个Map.entry),然后用Map.entry的getkey和getValue方法得到键和值。
作者: 李啸    时间: 2012-5-12 09:00
第一种方法是:Set<Entry<String,Integre>> set=map.entryset();
第二种方法是:Set set=map.keySet()
两种方法都是获取Map集合的key添加进Set集合中 通过Set集合遍历出来
作者: 小小企鹅    时间: 2012-5-12 09:17
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)查找指定键所映射的值
作者: 杨鹏    时间: 2012-5-12 09:18
首先Map中存储的是具有映射关系的键值对对象,键和值是一一对应的关系,键是唯一的不可重复,值有可能是重复的。
迭代的方法其一:可以通过键来查找对应其对应的值,所以可以通过返回一个集合来存储Map的所有键,在遍历存储键的这个集合时用键来获取值。所以Map提供了setKey()方法返回集合中键的一个set集合,再用get()方法根据键获取值,这样就可以达到遍历的目的。
迭代的方法其二:因为Map集合中的元素是具有映射的关系键和值,所以可以通过Map中的entrySet()返回一个存储集合元素映射关系的set集合,该set集合中元素的类型是Map.Entry<K,V>,遍历set集合过程中,用Map.Entry<K,V>中的getKey()和getValue()获取映射关系中的键和值,从而就实现了编历Map集合。
作者: 秦超    时间: 2012-5-12 09:31
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();
                      }
  
作者: 刘克方    时间: 2012-5-12 09:59
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
作者: 赵文杰    时间: 2012-5-13 08:29
还有一种迭代的方式,就是得到keySet对象。用get方法获取元素。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2