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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王小丑 中级黑马   /  2013-2-2 18:51  /  1323 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 张向辉 于 2013-2-4 21:49 编辑

Java.Map的遍历方法有很多种,集合的一个很重要的操作就是遍历,我知道最常用的一种如下 求高手能不能给出别的遍历方法 愿一起进步!

/*

* To change this template, choose Tools | Templates

* and open the template in the editor.

*/

package cn.tsp2c.liubao;



import java.util.Collection;

import java.util.HashMap;

import java.util.Iterator;

import java.util.Map;

import java.util.Set;

import java.util.TreeMap;



/**

*

* @author Administrator

*/

public class TestMap {



public static void main(String[] args) {

Map<String, Student> map = new HashMap<String, Student>();

Student s1 = new Student(“宋江”, “1001″, 38);

Student s2 = new Student(“卢俊义”, “1002″, 35);

Student s3 = new Student(“吴用”, “1003″, 34);

map.put(“1001″, s1);

map.put(“1002″, s2);

map.put(“1003″, s3);



Map<String, Student> subMap = new HashMap<String, Student>();

subMap.put(“1008″, new Student(“tom”, “1008″, 12));

subMap.put(“1009″, new Student(“jerry”, “1009″, 10));

map.putAll(subMap);



work(map);

workByKeySet(map);

workByEntry(map);

}



这是最常规的一种遍历方法,最常规就是最常用的,虽然不复杂,但很重要,这是我们最熟悉的!
这种方法最大的缺点就是灵活性不高,求高手给出一种灵活性高的方法!

评分

参与人数 1技术分 +1 收起 理由
Rancho_Gump + 1

查看全部评分

2 个回复

倒序浏览
本帖最后由 杨浩 于 2013-2-2 21:32 编辑

  1.     Map map = new HashMap();   
  2.       
  3.         Iterator it = map.entrySet().iterator();   
  4.       
  5.         while (it.hasNext()) {   
  6.       
  7.             Map.Entry entry = (Map.Entry) it.next();   
  8.       
  9.             Object key = entry.getKey();   
  10.       
  11.             Object value = entry.getValue();   
  12.       
  13.     }  
复制代码
JDK1.5中,应用新特性For-Each循环

  1.     Map m = new HashMap();   
  2.       
  3.     for(Object o : map.keySet()){   
  4.       
  5.         map.get(o);   
  6.       
  7.     }  
复制代码
返回的 set 中的每个元素都是一个 Map.Entry 类型。
private Hashtable<String, String> emails = new Hashtable<String, String>();
  另外 我们可以先把hashMap 转为集合Collection,再迭代输出,不过得到的对象
//方法一: 用entrySet()
  1. Iterator it = emails.entrySet().iterator();   
  2.   
  3.    while(it.hasNext()){   
  4.   
  5.     Map.Entry m=(Map.Entry)it.next();   
  6.   
  7.     logger.info("email-" + m.getKey() + ":" + m.getValue());   
  8.   
  9.    }
复制代码
方法二:jdk1.5支持,用entrySet()和For-Each循环()

  1.     for (Map.Entry<String, String> m : emails.entrySet()) {   
  2.       
  3.          
  4.       
  5.         logger.info("email-" + m.getKey() + ":" + m.getValue());   
  6.       
  7.        }  
复制代码
方法三:用keySet()

  1.     Iterator it = emails.keySet().iterator();   
  2.       
  3.       while (it.hasNext()){   
  4.       
  5.        String key;   
  6.       
  7.        key=(String)it.next();   
  8.       
  9.        logger.info("email-" + key + ":" + emails.get(key));   
  10.       
  11.       }  
复制代码
方法五:jdk1.5支持,用keySEt()和For-Each循环
  1. for(Object m: emails.keySet()){   
  2.   
  3.     logger.info("email-" + m+ ":" + emails.get(m));   
  4.   
  5.    }   
  6.       Map    aa    =    new    HashMap();        
  7. aa.put("tmp1",    new    Object());         
  8. //追加      替换用同样的函数.         
  9. aa.remove("temp1");                           
  10. //删除         
  11. for    (Iterator    i    =    aa.values().iterator();    i.hasNext();    )    {              Object    temp    =    i.next();      }            
  12. //遍历   
复制代码
来个完整的,包含TreeSet的元素内部排序的

  1.     public static void main(String[] args) {  
  2.        ArrayList<String> list = new ArrayList<String>();   
  3.        HashMap<Object,Object> hash = new HashMap<Object,Object>();   
  4.        TreeMap<Object,Object> treeMap = new TreeMap<Object,Object>();   
  5.        list.add("a");   
  6.        list.add("b");   
  7.        list.add("c");   
  8.        hash.put(3, 3);   
  9.        hash.put(4, 4);   
  10.        hash.put(5, 5);   
  11.        hash.put(6, 6);   
  12.        hash.put(1, 1);   
  13.        hash.put(2, 2);   
  14.        treeMap.put(1, 1);   
  15.        treeMap.put(2, 2);   
  16.        treeMap.put(3, 3);   
  17.        treeMap.put(4, 4);   
  18.        treeMap.put(5, 5);   
  19.        treeMap.put(6, 6);   
  20.        //list遍历   
  21.        for(String m: list){   
  22.         System.out.println(m);   
  23.        }   
  24.        // hashmap entrySet() 遍历
  25.        for(Map.Entry<Object,Object> m: hash.entrySet()){   System.out.println(m.getKey()+"---"+m.getValue());   
  26.        }   
  27.        //hashmap keySet() 遍历   
  28.        for(Object m: hash.keySet()){   System.out.println(m+"---"+hash.get(m));   
  29.        }   
  30.        // treemap keySet()遍历   
  31.        for(Object m: treeMap.keySet()){   
  32. System.out.println(m+"---"+treeMap.get(m));   
  33.        }   
  34. }  
复制代码

评分

参与人数 1黑马币 +12 收起 理由
Rancho_Gump + 12 赞一个!

查看全部评分

回复 使用道具 举报
Set<String> keySet=Map.keySet();//取得你的map的Key值的集合
                //Collection<Student> stu=stuMap1.values();
                //System.out.println(keySet);
                //System.out.println(stu);
                for(String s:keySet){//遍历
                        System.out.println(s+" "+Map.get(s));输出你的集合的Key值和Key对应的值
                }
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马