`

Why use Map.entrySet() instead of Map.keySet()?

阅读更多

 
If you just need keys, use keySet(). If you just need values, use values(). If you're going to use keys and values in your subsequent code, then you're best off using entrySet().

I frequently see people do this without entrySet(), and it usually looks something like this:
  1. for (Iterator it = map.keySet().iterator(); it.hasNext(); ) {  
  2.     Foo key = (Foo) it.next();  
  3.     Bar value = (Bar) map.get(key);  
  4.     // now do something with key and value  
  5. }  

This works, but it's making the JVM do extra work for no good reason. Every time you call get() you're making the JVM spend time doing a hashcode lookup, or navigating a tree and evaluating a comparator. These operations may be fast, or not, but why do them if you don't have to? A Map.Entry gives you both key and value, together, in the most efficient manner possible.
  1. for (Iterator it = map.entrySet().iterator(); it.hasNext(); ) {  
  2.     Map.Entry e = (Map.Entry) it.next();  
  3.     Foo key = (Foo) e.getKey();  
  4.     Bar value = (Bar) e.getValue();  
  5.     // now do something with key and value  

Under JDK 5 and later it's a little nicer:
  1. for (Map.Entry<Foo,Bar> e : map.entrySet()) {  
  2.     Foo key = e.getKey();  
  3.     Bar value = e.getValue();  
  4.     // now do something with key and value  
  5. }
分享到:
评论

相关推荐

    java中Map集合的常用遍历方法及HashMap的应用实例

    1、遍历Map.entrySet():它的每一个元素都是Map.Entry对象,这个对象中, 放着的就是Map中的某一对key-value; 2、遍历Map.keySet():它是Map中key值的集合,我们可以通过遍历这个集合来 读取Map中的元素; 3、...

    java循环Map java迭代Map

    Map a = new HashMap(); //方法一 Iterator it = a.entrySet().iterator(); while (it.hasNext()) { ...for(Map.Entry entry:a.entrySet()){ System.out.println(entry.getKey()+"="+entry.getValue()); }

    怎样遍历一个HashMap?

    &lt;br&gt;for (Iterator iter = map.entrySet().iterator(); iter.hasNext();) { &lt;br&gt; Map.Entry entry = (Map.Entry) iter.next(); &lt;br&gt; Object key = entry.getKey(); &lt;br&gt; Object val = entry.getValue()...

    java遍历特例

    Iterator it = map.entrySet().iterator(); while (it.hasNext()) { Map.Entry entry = (Map.Entry) it.next(); Object key = entry.getKey(); Object value = entry.getValue(); } Map map =...

    android控件监听管理工具

    for(Map.Entry,Object&gt; entry:data.entrySet()){ View v = (View) entry.getKey(); v.setOnClickListener(null); } } private void registerLisntener(){ for(Map.Entry,Object&gt; entry:data.entrySet...

    自定义MyHashMap集合及entrySet()实现.md

    用自定义的MyHashMap彻底了解EntrySet ()方法,及put()和get()方法实现

    JSON依赖包,共7个

    Iterator it=map.entrySet().iterator(); while(it.hasNext()){ Map.Entry m = (Map.Entry) it.next(); String key=(String)m.getKey(); String value=(String) m.getValue(); System.out....

    pageDate封装参数,不用实体类

    return map.entrySet(); } public boolean isEmpty() { // TODO Auto-generated method stub return map.isEmpty(); } public Set keySet() { // TODO Auto-generated method stub return map.keySet(); ...

    java Map 遍历方法

    java Map 遍历方法 Map map = new HashMap(); Iterator it = map.entrySet().iterator(); while (it.hasNext()) {

    java桑硅谷 day23 晨考.zip

    Set, ArrayList&lt;City&gt;&gt;&gt; entrySet=map.entrySet(); for (Entry, ArrayList&lt;City&gt;&gt; entry : entrySet) { System.out.println(entry.getKey()); ArrayList&lt;City&gt; value = entry.getValue(); for (City ...

    金陵科技学院软件院大二上Java高级1212Map.docx

    1212Map.doc 目的: 学会使用 Map、TreeMap 完成内容 1. 定义 Map, 加入一些数据 使用 entrySet 方式显示全部键、值其内容 使用 keySet 方式显示全部键、值内容 使用 values 显示全部值内容

    全量断言方法-Java版

    for (Map.Entry, Object&gt; m : exp.entrySet()) { //如果value是JSONObject类型,则将该类型转化成Map类型,继续循环比较 if (JSONObject.class == m.getValue().getClass()) { Map, Object&gt; expDataInfo = ...

    JavaScript中实现Map的示例代码

    map.entrySet() // 返回Entity[{key,value},{key,value}] map.containsKey('kevin') //返回:false function Map() { this.keys = new Array(); this.data = new Object(); /** * 放入一个键值对 * @par

    java遍历Map对象的说有数据

    &lt;FONT color=#0000ff&gt;//方法一: 用entrySet() Iterator it = emails.entrySet().iterator(); while(it.hasNext()){ Map.Entry m=(Map.Entry)it.next(); logger.info("email-" + m.getKey() + ":" + m....

    怎么在java 8的map中使用stream

    文章目录简介基本概念使用Stream获取map的key使用stream获取map的value总结 怎么在java 8的map中使用stream 简介 Map是java中非常常用的一个集合类型,我们通常也需要去遍历Map去获取某些值,java 8引入了Stream的...

    模拟实现购物车功能

    Set, Integer&gt;&gt; entrySet = map.entrySet(); System.out.println("编号\t单价\t数量\t名称\t总价"); for(Entry, Integer&gt; entry:entrySet){ Goods goods = entry.getKey(); Integer quantity = entry.getValue...

    android 视频播放器demo

    for(Map.Entry, String&gt; entry: params.entrySet()){ pathBuilder.append(entry.getKey()).append("=").append(URLEncoder.encode(entry.getValue())).append("&"); } //...

    模拟购物车

    Set, Integer&gt;&gt; entrySet = map.entrySet(); System.out.println("编号\t单价\t数量\t名称\t总价"); for(Entry, Integer&gt; entry:entrySet){ Goods goods = entry.getKey(); Integer quantity = entry.getValue...

    智能识别收货地址Java.pdf

    &gt; entry : map.entrySet()) { if (sb.length() &gt; 0) { sb.append("&"); } sb.append(String.format("%s=%s", URLEncoder.encode(entry.getKey().toString(), "UTF-8"), URLEncoder.encode(entry.getValue().toString...

    android手机游戏源码

    手机游戏源码,可运行,比较好 ... for(Map.Entry, MediaPlayer&gt; entry : sounds.entrySet()) { MediaPlayer mp = entry.getValue(); if (mp != null) { mp.release(); } } } }

Global site tag (gtag.js) - Google Analytics