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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© cuilitang 中级黑马   /  2013-10-19 21:27  /  1712 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 cuilitang 于 2013-10-20 21:03 编辑

Map的遍历总是忘记,没过几天又忘记了,大家谁能给总结一下啊,用代码最好。

评分

参与人数 1技术分 +1 收起 理由
黄文伯 + 1 赞一个!

查看全部评分

7 个回复

正序浏览
  1. package cn.itheima;

  2. import java.util.HashMap;
  3. import java.util.Iterator;
  4. import java.util.Map;
  5. import java.util.Map.Entry;
  6. import java.util.Set;

  7. public class IteratorMap {
  8.        

  9.         public static void main(String[] args) {
  10.                 Map<Integer,String> map = new HashMap<Integer,String>();
  11.                 map.put(1, "冠军");
  12.                 map.put(2, "亚军");
  13.                 map.put(3, "季军");
  14.                 map.put(4, "皇军");
  15.                 map.put(5, "皇协军");
  16.                
  17.                 keysetIterator(map);
  18.                 System.out.println("-----割了去喂狗---------");
  19.                 entrysetIterator(map);
  20.                
  21.         }
  22.        
  23.         /**方法一:首先通过keySet()将map中的key存储到set中
  24.          * 然后使用迭代器遍历set,在遍历set的迭代器内部通过map.get(key) 将value取出来。然后一块打印。
  25.          * 实际上是通过将key存储到set中然后对set的遍历实现的,在遍历set的 同时,使用get()方法取出每个key的value。       
  26.          */
  27.         public static void keysetIterator(Map<Integer,String> map){       
  28.                 Set<Integer> keySet = map.keySet();
  29.                 Iterator<Integer> it = keySet.iterator();
  30.                 while(it.hasNext()){
  31.                         Integer key = it.next();
  32.                         String value = map.get(key);     //遍历key的同时通过get方法取得value。
  33.                         System.out.println("key:"+key+"\t"+"value:"+value);
  34.                 }
  35.                                
  36.         }
  37.        
  38.         /**方法二:使用Map.Entry类进行访问。
  39.          * JDK1.6对Map.Entry类的解释:映射项(键-值对)。Map.entrySet 方法返回映射的 collection 视图,其中的元素属于此类。
  40.          * 由此可见Map.Entry实际上是将键值对封装成一个元素(映射项),将映射项存储进set进行遍历。Entry本来就是入口的意思嘛。
  41.          * 最终也是借助对set元素的遍历实现的map遍历。
  42.          */
  43.         public static void entrysetIterator(Map<Integer,String> map){
  44.                 Set<Entry<Integer,String>> entrySet = map.entrySet();
  45.                 Iterator<Entry<Integer, String>> it = entrySet.iterator();
  46.                 while(it.hasNext()){
  47.                         Entry<Integer, String> entry = it.next();
  48.                         Integer key = entry.getKey();
  49.                         String value = entry.getValue();
  50.                         System.out.println("key:"+key+"\t"+"value:"+value);
  51.                 }
  52.         }

  53. }

  54. /**
  55. * 综上所述,其实map的遍历都是通过对set元素的迭代实现的,只不过中间过程不同。
  56. * keySet方法是将key存储进set,然后通过get()取得value;
  57. * entrySet方法则是将Entry.Set类型存储进set,然后通过Entry.Set的getKey()和getValue()分别取得key和value。
  58. */
复制代码
回复 使用道具 举报
天下 发表于 2013-10-20 00:16
Map集合特有的两种取出元素的方式:
KeySet();
entrySet();

谢谢美女,搞定!
回复 使用道具 举报
nineteen73 发表于 2013-10-20 11:03
//用HashMap存储字符串并遍历
////由键找值
import java.util.Collection;

你这动作也太慢了,看看文伯兄
回复 使用道具 举报

//用HashMap存储字符串并遍历
////由键找值
import java.util.Collection;
import java.util.HashMap;

public class MyHashMap {
        public static void main(String[] args) {
               
                HashMap<String,String> map=new HashMap<String,String>( );
                map.put("it001", "zhangsan");
                map.put("it002", "lisi");
                map.put("it003", "wangwu");
               
                //由键找值
                //定义集合接收键
                Collection<String> set=map.keySet();
                //增强for遍历集合
                for(String key:set){
                        String value=map.get(key);
                        System.out.println(key+"\t"+value);
                }
        }
}

//将键和值的映射关系作为对象存储到了Set集合中,而这个映射关系的类型就是Map.Entry
import java.util.Collection;
import java.util.HashMap;

public class MyHashMap {
        public static void main(String[] args) {
               
        HashMap<String,String> map=new HashMap<String,String>();
        map.put("it001", "zhangsan");
        map.put("it002", "lisi");
        map.put("it003", "wangwu");
               
        Set<Map.Entry<String,String>> set=map.entrySet();
        for(Map.Entry<String,String> me:set){
            String key=me.getKey();
            String value=me.getValue();
            System.out.println(key+"\t"+value);
        }
        }
}
回复 使用道具 举报
亲,如问题已解决请将分类的“未解决”改为“已解决”。以后的问题贴也要及时更改分类哦~
回复 使用道具 举报
呵呵  面试被问到这个问题~~
回复 使用道具 举报

回帖奖励 +1

Map集合特有的两种取出元素的方式:
KeySet();
entrySet();
这个练习一下就容易记住的
  1. import java.util.*;
  2. class HashMapDemo{
  3.         public static void main(String[] args){
  4.                 Map<String ,String> map =new HashMap<String,String>();
  5.                 map.put("01","云1");
  6.                 map.put("04","云4");
  7.                 map.put("02","云2");
  8.                 map.put("03","云3");
  9.                
  10.                 //第二种取出方式
  11.                 //将Map集合中的映射关系存入set集合中
  12.                 Set<Map.Entry<String,String>> es=map.entrySet();
  13.                
  14.                 Iterator<Map.Entry<String,String>> it=es.iterator();
  15.                
  16.                 while(it.hasNext()){
  17.                         //指定返回类型:调用其中的方法取出
  18.                         Map.Entry<String,String> me=it.next();
  19.                        
  20.                         String value=me.getValue();
  21.                         String key=me.getKey();
  22.                         System.out.println("key="+key+"------"+"value="+value);
  23.                 }
  24.                
  25.                
  26.                

  27.                 /*//第一种取出方式
  28.                 //先获取map集合的所有键存入set集合中,keyset()方法
  29.                
  30.                 Set<String> ks=map.keySet();
  31.                 //有了set集合,就可以获取迭代器
  32.                 Iterator<String> it=ks.iterator();
  33.                 while (it.hasNext()){
  34.                         String key=it.next();
  35.                         //根据Map中的get(Key)方法获取所有的值(value)
  36.                         String value=map.get(key);
  37.                        
  38.                         System.out.println("key="+key+"+++++"+"value="+value);
  39.                 }*/
  40.         }
  41. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
黄文伯 + 1 很给力!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马