java--map的遍历
来源:互联网 发布:尼康中国倒闭 知乎 编辑:程序博客网 时间:2024/05/29 16:54
很无语,每次使用到map进行遍历时我都要BAIDU下,哎,也许是偶尔用一次所以也没取记录。
现在在此记录下,方便后续使用快速查找。
这里比较赞成使用的方法是方法1
方法一 在for-each循环中使用entries来遍历(可取的遍历方式。在键值都需要时使用)
Map<Integer, Integer> map = new HashMap<Integer, Integer>();for (Map.Entry<Integer, Integer> entry : map.entrySet()) { System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue())}
注意:for-each循环在java 5中被引入所以该方法只能应用于java 5或更高的版本中。如果你遍历的是一个空的map对象,for-each循环将抛出NullPointerException,因此在遍历前你总是应该检查空引用
方法二 在for-each循环中遍历keys或values。(主需要key或只需要value,该方法比entrySet遍历在性能上稍好(快了10%))
Map<Integer, Integer> map = new HashMap<Integer, Integer>();//遍历map中的键for (Integer key : map.keySet()) { System.out.println("Key = " + key);}//遍历map中的值for (Integer value : map.values()) { System.out.println("Value = " + value);}
方法三使用Iterator遍历(使用map的迭代器,在老版本的jdk中使用)
Map map = new HashMap();Iterator entries = map.entrySet().iterator();while (entries.hasNext()) { Map.Entry entry = (Map.Entry) entries.next(); Integer key = (Integer)entry.getKey(); Integer value = (Integer)entry.getValue(); System.out.println("Key = " + key + ", Value = " + value);}
方法四、通过键找值遍历(效率低,咋一看会和方法二差不多,仔细瞧,这里面是用key获取value,达到同时得到key和value)
Map<Integer, Integer> map = new HashMap<Integer, Integer>();for (Integer key : map.keySet()) { Integer value = map.get(key); System.out.println("Key = " + key + ", Value = " + value);}作为方法一的替代,这个代码看上去更加干净;但实际上它相当慢且无效率。因为从键取值是耗时的操作(与方法一相比,在不同的Map实现中该方法慢了20%~200%)。如果你安装了FindBugs,它会做出检查并警告你关于哪些是低效率的遍历。所以尽量避免使用。
总结
如果仅需要键(keys)或值(values)使用方法二。如果你使用的语言版本低于java 5,或是打算在遍历时删除entries,必须使用方法三。否则使用方法一(键值都要)。
0 0
- java map 的遍历
- java Map 的遍历
- java Map的遍历
- java--map的遍历
- Java Map的遍历
- java map的遍历
- java的Map遍历
- java map的遍历
- java--Map的遍历
- Java Map的遍历
- java Map的遍历
- java Map的遍历
- java map的遍历
- java map的遍历
- java遍历map的方法
- Java 中 Map 的遍历
- Java中Map的遍历
- java遍历map的方法
- Qt中提高SQLite的读写速度
- hdu 1690 Bus System 最短路(dijkstra+floyd)
- java初学者感想五
- c语言字符串 数字转换函数大全
- 安装tslib中遇到的错误:./autogen.sh: 4: autoreconf: not found
- java--map的遍历
- 在Spring中配置连接池
- 启动tomcat时为tomcat指定JDK 而不是读取环境变量中的配置
- ubuntu下安装与卸载qt的方法
- 在Linux下获取修改网关GateWay的两个函数
- 最少邮票问题 & 两船载货
- MyBatis Lazy Loading
- IOS学习——UIScreen(物理屏幕大小)
- 解决android模拟器启动后只能在任务栏显示而不能在电脑屏幕显示的问题