Java中的Map遍历

来源:互联网 发布:优化工具 编辑:程序博客网 时间:2024/03/29 13:59

在Map集合中

values():获取集合中的所有的值,没有键,没有对应关系;

KeySet():将Map中所有的键存入到Set集合中。因为Set具备迭代器,所以可以用迭代方式取出所有的键,再根据get方法,获取每一个键对应的值。

entrySet():Set<Map.Entry<K,V>> entrySet()返回此映射中包含的映射关系的Set视图。Map.Entry表示映射关系。entrySet():迭代后可以用e.getKey(),e.getValue()取key和value。

例子:

values():

Map<String,String> map = new HashMap<String,String>();map.put("01", "zhangsan");map.put("02", "lisi");map.put("03", "wangwu");Collection<String> collection = map.values();//返回值是个值的Collection集合System.out.println(collection);打印结果:[zhangsan, lisi, wangwu]
keySet():

Map<String,String> map = new HashMap<String,String>();map.put("01", "zhangsan");map.put("02", "lisi");map.put("03", "wangwu");                Set<String> keySet = map.keySet();//先获取map集合的所有键的Set集合Iterator<String> it = keySet.iterator();//有了Set集合,就可以获取其迭代器。                while(it.hasNext()){        String key = it.next();        String value = map.get(key);//有了键可以通过map集合的get方法获取其对应的值。                                System.out.println("key: "+key+"-->value: "+value);//获得key和value值}
entrySet():

Map<String,String> map = new HashMap<String,String>();                map.put("01", "zhangsan");map.put("02", "lisi");map.put("03", "wangwu");//通过entrySet()方法将map集合中的映射关系取出(这个关系就是Map.Entry类型)Set<Map.Entry<String, String>> entrySet = map.entrySet();//将关系集合entrySet进行迭代,存放到迭代器中                Iterator<Map.Entry<String, String>> it2 = entrySet.iterator();                while(it2.hasNext()){        Map.Entry<String, String> me = it2.next();//获取Map.Entry关系对象me        String key2 = me.getKey();//通过关系对象获取key        String value2 = me.getValue();//通过关系对象获取value                                System.out.println("key: "+key2+"-->value: "+value2);}
虽然使用keyset及entryset来进行遍历能取得相同的结果,但两者的遍历速度是有差别的

keySet():迭代后只能通过get()取value
entrySet():迭代后可以通过e.getKey(),e.getValue()取key和value,返回的是Entry接口 

说明:keySet()的速度比entrySet()慢了很多,也就是keySet方式遍历Map的性能不如entrySet性能好,为了提高性能,以后多考虑用entrySet()方式来进行遍历。


另一个例子:

public static void main(String[] args) {  Map<String, String> map = new HashMap<String, String>();  map.put("1", "value1");  map.put("2", "value2");  map.put("3", "value3");    //第一种:普遍使用,二次取值  System.out.println("通过Map.keySet遍历key和value:");  for (String key : map.keySet()) {   System.out.println("key= "+ key + " and value= " + map.get(key));  }    //第二种  System.out.println("通过Map.entrySet使用iterator遍历key和value:");  Iterator<Map.Entry<String, String>> it = map.entrySet().iterator();  while (it.hasNext()) {   Map.Entry<String, String> entry = it.next();   System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue());  }    //第三种:推荐,尤其是容量大时  System.out.println("通过Map.entrySet遍历key和value");  for (Map.Entry<String, String> entry : map.entrySet()) {   System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue());  }  //第四种  System.out.println("通过Map.values()遍历所有的value,但不能遍历key");  for (String v : map.values()) {  System.out.println("value= " + v);  }}

转载自:

http://www.cnblogs.com/bukudekong/p/3889740.html

http://blog.csdn.net/liu826710/article/details/9001254

原创粉丝点击