Java中关于HashMap的元素遍历的顺序问题
2014-02-20 23:24
302 查看
今天在使用如下的方式遍历HashMap里面的元素时
发现得到的元素不是按照之前加入HashMap的顺序输出的,这个问题我之前倒是没有注意过,后来上网查了一下原因,发现是:HashMap散列图、Hashtable散列表是按“有利于随机查找的散列(hash)的顺序”。并非按输入顺序。遍历时只能全部输出,而没有顺序。甚至可以rehash()重新散列,来获得更利于随机存取的内部顺序。
总之,遍历HashMap或Hashtable时不要求顺序输出,即与顺序无关。
可以用java.util.LinkedHashMap 就是按加入时的顺序遍历了。
类似的还有 java.util.LinkedHashSet
for (Entry<String, String> entry : hashMap.entrySet()) { MessageFormat.format("{0}={1}",entry.getKey(),entry.getValue()); }
发现得到的元素不是按照之前加入HashMap的顺序输出的,这个问题我之前倒是没有注意过,后来上网查了一下原因,发现是:HashMap散列图、Hashtable散列表是按“有利于随机查找的散列(hash)的顺序”。并非按输入顺序。遍历时只能全部输出,而没有顺序。甚至可以rehash()重新散列,来获得更利于随机存取的内部顺序。
总之,遍历HashMap或Hashtable时不要求顺序输出,即与顺序无关。
Map<String, String> paramMap = new HashMap<String, String>();
可以用java.util.LinkedHashMap 就是按加入时的顺序遍历了。
Map<String, String> paramMap = new LinkedHashMap <String, String>();
类似的还有 java.util.LinkedHashSet
相关文章推荐
- Android Eclipse JNI 调用 .so文件加载问题
- Java 6 JVM参数选项大全(中文版)
- spring .xml中bean下的property属性
- Java实现MySQL图片存取操作
- JAVA设计模式学习
- Java5中线程池与线程结果返回
- Java多媒体播放器(四)
- Java多媒体播放器(三)
- Myeclipse中手动添加ibatis SqlMapConfig.xml sql-map-config-2.dtd文件 调出xml提示
- 笔记 <Core Java2 卷1>第三章 基本编程结构
- 百度BAE3.0 Java环境(JSP环境) 帮助文档 备份
- Java学习笔记-命令模式
- Java多媒体播放器(二)
- Java的位操作
- Java知识总结-集合二
- Java知识总结-集合二
- struts2 的第一个程序hello struts2
- [转载]Java应用程序中的内存泄漏及内存管理
- spring中的web.xml部分属性详细
- eclipse优化