博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java中如何遍历Map对象
阅读量:6863 次
发布时间:2019-06-26

本文共 1036 字,大约阅读时间需要 3 分钟。

  方法一:使用map.entrySet()来遍历。这是最常见的并且在大多数情况下也是最可取的遍历方式。在键值都需要的时候使用。

  Map<String,String> map = new HashMap<String,String>();

  map.put("lw","666");

  map.put("lw1","666");

  if(map.entrySet().size() > 0){

    for(Entry<String,String> entry : map.entrySet()){

      System.out.println("Key = "+entry.getKey()+",Value = "+entry.getValue());

    }

  }

  如果你遍历的是一个空的map对象,for-each循环将抛出NullPointerException,因此在遍历前你总是先判空处理。发现得到的元素不是按照之前加入HashMap的顺序输出的,这个问题我之前倒是没有注意过,后来上网查了一下原因,发现是:HashMap散列图、Hashtable散列表是按“有利于随机查找的散列(hash)的顺序”。并非按输入顺序。遍历时只能全部输出,而没有顺序。甚至可以rehash()重新散列,来获得更利于随机存取的内部顺序。

  总之,遍历HashMap或Hashtable时不要求顺序输出,即与顺序无关。

  可以用java.util.LinkedHashMap 就是按加入时的顺序遍历了。Map<String, String> paramMap = new LinkedHashMap <String, String>();

 

  方法二:如果只需要map中的键或者值,你可以通过keySet或values来实现遍历,而不是用entrySet()。

  for(String key : map.keySet()){

    Sysyem.out.println("key = "+key);

  }

  for(String value : map.values()){

    System.out.println("value = "+value);

  }

  该方法比entrySet遍历在性能上稍好(快了10%),而且代码更加干净。

 

转载于:https://www.cnblogs.com/vanl/p/7018775.html

你可能感兴趣的文章
AIX下两个常用命令
查看>>
从抵触到力推,.Net Core 的成功让微软正视开源
查看>>
Loadrunner11如何使用非IE浏览器录制脚本
查看>>
ACL-文件访问控制列表
查看>>
css解决div子元素margin溢出的问题
查看>>
linux内核参数注释与优化
查看>>
grep小练习
查看>>
英语文章、常用短语部分摘选集锦
查看>>
ADMT3.2域迁移之Server2003至Server2012系列(七)安装ADMT3.2
查看>>
DISPLAY环境变量的作用
查看>>
006.递归和分治思想
查看>>
FTP服务器端程序分类
查看>>
CSS布局之品字布局
查看>>
LINUX学习笔记高度浓缩版之一 :用户管理、启动过程、硬盘管理
查看>>
JavaScript创建对象的方法
查看>>
『ExtJS』01 009. ExtJS 4 方法重载
查看>>
org.springframework.data.mapping.PropertyReferenceException: No property xxxx found for type Xxxx
查看>>
我的友情链接
查看>>
我的友情链接
查看>>
AIX查看端口被占用
查看>>