map循环取值 keyset与entryset区别

转载 2015年07月08日 10:36:26



转自:http://blog.csdn.net/lwzcjd/article/details/5432430

以后使用的时候 方便查询

以下的一部分内容为转载的:

1、基本概述

Set<Map.Entry<K,V>> entrySet()  返回此映射中包含的映射关系的 set 视图。

Set<K>              keySet()      返回此映射中包含的键的 set 视图。

2、效率分析

对于keySet其实是遍历了2次,一次是转为iterator,一次就从hashmap中取出key所对于的value。而entryset只是遍历了第一次,他把key和value都放到了entry中,所以就快了。

3、使用举例

Map<String, String> maps = new HashMap<String, String>();   
  //方法一: 用entrySet()   
  Iterator<Entry<String,String>> it = maps.entrySet().iterator();   
  while(it.hasNext()){   
   Map.Entry<String,String> m = it.next();   
   String key = m.getKey();
   String value= m.getValue(); 
  }   
  // 方法二:jdk1.5支持,用entrySet()和For-Each循环()   
  for (Map.Entry<String, String> m : maps.entrySet()) {   
   String key = m.getKey();
   String value= m.getValue();    
  }   
  // 方法三:用keySet()   
  Iterator<String> it2 = maps.keySet().iterator();   
  while (it2.hasNext()){   
   String key = it2.next();
   String value= maps.get(key);
  }   
  // 方法四:jdk1.5支持,用keySet()和For-Each循环   
  for(String m: maps.keySet()){   
   String key = m;
   String value= maps.get(m);
  }

foreach和while的效率几乎是差不多的,而for则相对较慢一些。foreach可以替代掉for吗?显然不是。
foreach的内部原理其实还是 Iterator,但它不能像Iterator一样可以人为的控制,而且也不能调用iterator.remove(),更不能使用下标来方便的访问元素。因此foreach这种循环一般只适合做数组的遍历,提取数据显示等,不适合用于增加删除和使用下标等复杂的操作。



下面是遍历一个value是数组的map


Map<String,String[]> maps=new HashMap<String, String[]>();
		maps=request.getParameterMap();
		Map<String ,String > paramterMap=new HashMap<String, String>();
		Iterator<String> it= maps.keySet().iterator();
		while(it.hasNext()){
			String key=it.next();
			paramterMap.put(key, maps.get(key)[0]);//此处需要谨慎
			String [] pv=maps.get(key);
		}






JAVA 中 提取 JSON 字符串中的 KEY 和 VALUE 值,去除JSON中的VALUE值的 前后空格

JSONObject jobj = JSONObject.fromObject(conditions == null ? "{}" : conditions); Iterator it ...

mysql分组然后统计某个值的百分比sql实现

问题: mysql如何遍历某个字段所有值并计算比例解决问题1.构造数据 INSERT INTO `test`.`test` (`id`, `num`, `num2`, `branch_id`, `o...

Map集合中value()方法与keySet()、entrySet()有什么区别

Map map = new HashMap(); map.put("01", "zhangsan"); map.put("02", "lisi"); map.put("03", "wangwu"...

Map集合中value()方法与keySet()、entrySet()区别

在Map集合中 values():方法是获取集合中的所有的值----没有键,没有对应关系, KeySet(): 将Map中所有的键存入到set集合中。因为set具备迭代器。所有可以迭代方式取出所...

Map集合中value()方法与keySet()、entrySet()区别

在Map集合中 values():方法是获取集合中的所有的值----没有键,没有对应关系, KeySet(): 将Map中所有的键存入到set集合中。因为set具备迭代器。所有可以迭代方式取...

Map集合KeySet()和entrySet()的区别

在Map集合中 values():方法是获取集合中的所有的值----没有键,没有对应关系, KeySet(): 将Map中所有的键存入到set集合中。因为set具备迭代器。所有可...

Map集合中value()方法与keySet()、entrySet()区别

在Map集合中 values():方法是获取集合中的所有的值----没有键,没有对应关系, KeySet(): 将Map中所有的键存入到set集合中。因为set具备迭代器。所有可以迭代方式取...
  • zo_184
  • zo_184
  • 2015年04月09日 17:55
  • 272

Map集合中value()方法与keySet()、entrySet()区别

在Map集合中 values():方法是获取集合中的所有的值----没有键,没有对应关系, KeySet(): 将Map中所有的键存入到set集合中。因为set具备迭代器。所有可以迭代方式取出所...

Map集合中value()方法与keySet()、entrySet()区别

在Map集合中 values():方法是获取集合中的所有的值----没有键,没有对应关系, KeySet(): 将Map中所有的键存入到set集合中。因为set具备迭代器。所有可以迭代方式取出所...

Map集合中value()与keySet()、entrySet()区别

在Map集合中 values():方法是获取集合中的所有的值----没有键,没有对应关系, KeySet(): 将Map中所有的键存入到set集合中。因为set具备迭代器。所有可以迭代方式取...
  • yjclsx
  • yjclsx
  • 2016年03月24日 22:41
  • 233
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:map循环取值 keyset与entryset区别
举报原因:
原因补充:

(最多只允许输入30个字)