Map遍历

map的遍历一般有几种吧

  • 遍历entrySet
for(Map.Entry<String,String> entry : map.entrySet()){

}

Iterator<Map.Entry<String,String>> it = map.entrySet().iterator();
while(it.hasNext()){ }
  • 遍历keySet
for(String key : map.keySet()){

}

//iterator同上
  • 遍历valueSet
for(String value : map.valueSet()){

}

//iterator同上

选择

从书写上来看,后两种要更简单些;

但是考虑下map遍历的场景:

  • 根据key值拿value

所以keySet和entrySet更经常使用吧;

for(Map.Entry<String,String> entry : map.entrySet()){
entry.getKey();
} for(String key : map.keySet()){
map.get(key);
}

但是,从性能角度讲,推荐使用entrySet

因为,keySet拿value的时候又一次遍历的map,每次取用都多一次开销,对于大容量的Map来说,性能差异也比较明显。

public V get(Object key) {
if (key == null)
return getForNullKey();
Entry<K,V> entry = getEntry(key); return null == entry ? null : entry.getValue();
}
final Entry<K,V> getEntry(Object key) {
if (size == 0) {
return null;
} int hash = (key == null) ? 0 : hash(key);
for (Entry<K,V> e = table[indexFor(hash, table.length)];
e != null;
e = e.next) {
Object k;
if (e.hash == hash &&
((k = e.key) == key || (key != null && key.equals(k))))
return e;
}
return null;
}

参考文章

【技术累积】【点】【java】【28】Map遍历的更多相关文章

  1. Java中Map遍历的四种方案

    在Java中如何遍历Map对象 方式一 这是最常见的并且在大多数情况下也是最可取的遍历方式.在键值都需要时使用. Map<Integer, Integer> map = new HashM ...

  2. java的Map遍历

    java中的map遍历有多种方法,从最早的Iterator,到java5支持的foreach,再到java8 Lambda,让我们一起来看下具体的用法以及各自的优缺点 先初始化一个mappublic ...

  3. java之map遍历

    java开发中常常会用到遍历,所以下边就列举四种map的遍历方法. public class testMap { public static void main(String[] args) { Ma ...

  4. java中Map遍历的四种方式

    在java中所有的map都实现了Map接口,因此所有的Map(如HashMap, TreeMap, LinkedHashMap, Hashtable等)都可以用以下的方式去遍历. 方法一:在for循环 ...

  5. Java中Map常用方法总结以及遍历方式的汇总

    一.整理: 看到array,就要想到角标. 看到link,就要想到first,last. 看到hash,就要想到hashCode,equals. 看到tree,就要想到两个接口.Comparable, ...

  6. Java Map遍历方式的选择

    [原文] 1. 阐述 对于Java中Map的遍历方式,很多文章都推荐使用entrySet,认为其比keySet的效率高很多.理由是:entrySet方法一次拿到所有key和value的集合:而keyS ...

  7. java map 遍历

    转自http://rain-2372.iteye.com/blog/1615615 package com.spring.test_B11_aop1; import java.util.HashMap ...

  8. 转!! Java中如何遍历Map对象的4种方法

    在Java中如何遍历Map对象 How to Iterate Over a Map in Java 在java中遍历Map有不少的方法.我们看一下最常用的方法及其优缺点. 既然java中的所有map都 ...

  9. 【转】Java中如何遍历Map对

    在Java中如何遍历Map对象 How to Iterate Over a Map in Java 在java中遍历Map有不少的方法.我们看一下最常用的方法及其优缺点. 既然java中的所有map都 ...

随机推荐

  1. 单例模式解决RabbitMQ超出最大连接问题

    今天在项目稳定性测试过程中遇到一个情景:通过工具jMeter一直请求消息转发服务器,消息转发服务器再向rabbitMQ发送数据,在这期间出现了问题.MQ意外宕机. 1. 查看rabbitMQ管理界面. ...

  2. SiteMesh2-标签库

    SiteMesh包括两大标签库. 一.Decorator Tags:被用于建立装饰器页面. 1.<decorator:head/>  插入原始页面(被包装页面)的head标签中的内容(不包 ...

  3. J2SE基础:5.面向对象的特性2

    Final的使用 final在类之前 表示该类是终于类.表示该类不能再被继承. final在方法之前 表示该方法是终于方法,该方法不能被不论什么派生的子类覆盖. final在变量之前 表示变量的值在初 ...

  4. php 生成订单号

    最近在练手一个订单提交的小项目,需要用到生成订单号,网上找了下,觉得这个最好. function build_order_no(){ return date('Ymd').substr(implode ...

  5. HDU 4005 The war(双连通好题)

    HDU 4005 The war pid=4005" target="_blank" style="">题目链接 题意:给一个连通的无向图.每条 ...

  6. QQ加群组件-iPhone、Android、网页上加入QQ群

    iPhone代码: - (BOOL)joinGroup:(NSString *)groupUin key:(NSString *)key{ NSString *urlStr = [NSString s ...

  7. .net core2.0添加json文件并转化成类注入控制器使用 让js调试更简单—console

    .net core2.0添加json文件并转化成类注入控制器使用 上一篇,我们介绍了如何读取自定义的json文件,数据是读取出来了,只是处理的时候太麻烦,需要一遍一遍写,很枯燥.那么有没有很好的办法呢 ...

  8. c#复制文件、文件夹代码

    c#没有复制目录的代码,需要通过递归实现复制目录: 使用方法: 1.把c:\temp\index目录下的所有子目录和文件复制到 c:\temp\newindex目录下. bool copy = Cop ...

  9. SOJ.Output the Yanghui triangel

    Output the Yanghui triangel     总提交数量: 225 通过数量: 59                 时间限制:1秒    内存限制:256兆 题目描写叙述 Writ ...

  10. leaning website

      -->SoapUI http://soapui-tutorial.com/home/login/SOAPUI    Module 13 - 1, 2, 3, 4, 5, 6 Module 1 ...