Java中Map.keySet()返回值遍历的排序问题
来源:互联网 发布:画像标签 数据库设计 编辑:程序博客网 时间:2024/06/05 19:17
很多时候大家都喜欢用HashMap,但是我们在遍历HashMap时获取的顺序却是乱序的,如何解决呢?看下文
- > HashMap.keySet()方法,而这个方法返回的Set结果,里面的数据是乱序排放的。
JavaDoc里面没有详细地解释,所以用代码进行了一下尝试.
import java.sql.Timestamp;import java.util.HashMap;import java.util.Hashtable;import java.util.Iterator;import java.util.LinkedHashMap;import java.util.Map;import java.util.Set;import java.util.TreeMap;public class Test2 { /** * @param args */ public static void main(String[] args) { ///////////////////////////////////////////////////////////// // TEST ///////////////////////////////////////////////////////////// System.out.println("## Hashtable ##"); Hashtable<String , String> ht = new Hashtable<String , String>(); ht.put("1", "OOO"); ht.put("3", "OOO"); ht.put("2", "OOO"); ht.put("5", "OOO"); ht.put("4", "OOO"); Iterator<String> it = ht.keySet().iterator(); while (it.hasNext()) { System.out.println(it.next()); } ///////////////////////////////////////////////////////////// // TEST ///////////////////////////////////////////////////////////// System.out.println("## TreeMap ##"); TreeMap<String , String> tm = new TreeMap<String , String>(); tm.put("1", "OOO"); tm.put("3", "OOO"); tm.put("2", "OOO"); tm.put("5", "OOO"); tm.put("4", "OOO"); Iterator<String> it2 = tm.keySet().iterator(); while (it2.hasNext()) { System.out.println(it2.next()); } ///////////////////////////////////////////////////////////// // TEST ///////////////////////////////////////////////////////////// System.out.println("## HashMap ##"); Map<String , String> hm = new HashMap<String , String>(); hm.put("1", "OOO"); hm.put("3", "OOO"); hm.put("2", "OOO"); hm.put("5", "OOO"); hm.put("4", "OOO"); Iterator<String> it3 = hm.keySet().iterator(); while (it3.hasNext()) { System.out.println(it3.next()); } ///////////////////////////////////////////////////////////// // TEST ///////////////////////////////////////////////////////////// System.out.println("## LinkedHashMap ##"); LinkedHashMap<String, String> lhm = new LinkedHashMap<String , String>(); lhm.put("1", "OOO"); lhm.put("3", "OOO"); lhm.put("2", "OOO"); lhm.put("5", "OOO"); lhm.put("4", "OOO"); Iterator<String> it4 = lhm.keySet().iterator(); while (it4.hasNext()) { System.out.println(it4.next()); } }}
输出结果如下
## Hashtable ##54321## TreeMap ##12345## HashMap ##32154## LinkedHashMap ##13254
由此可见,大致上如下
Hashtable.keySet() 降序
TreeMap.keySet() 升序
HashMap.keySet() 乱序
LinkedHashMap.keySet() 原序
除了TreeMap.keySet(), JavaDoc中对keySet()返回值的顺序没有明确说明,
实际应用中,如果对顺序有明确要求,最好能明确的对其顺序进行整理。
0 0
- Java中Map.keySet()返回值遍历的排序问题
- Java中keySet()返回值的排序问题
- Java中keySet()返回值的排序问题
- Java中keySet()返回值的排序问题
- Java中keySet()返回值的排序问题
- Java中keySet()返回值的排序问题
- java Map的keySet方法,并遍历Map的值
- Map的keySet遍历
- Map.keySet()排序问题
- Java中遍历Map的两种方法:keySet和entrySet
- Java中遍历Map的两种方法:keySet和entrySet
- Java中遍历Map的三种方法:keySet、entrySet 、values()
- Java中遍历Map的两种方法:keySet和entrySet .
- Java中遍历Map的两种方法:keySet和entrySet
- Java中遍历Map的两种方法:keySet和entrySet
- Java中遍历Map的两种方法:keySet和entrySet
- Java中遍历Map的两种方法:keySet和entrySet
- java基础--关于map的遍历keySet和entrySet
- JavaScript中Prototype【具有js特色的OOP的基础】的复习
- 怎样取SAP中的业务对象状态
- iOS FDMB删除重复的内容
- ACM集训day9
- sql server 单引号引起的执行时间过长
- Java中Map.keySet()返回值遍历的排序问题
- Python爬虫----基础知识(简单爬虫架构、URL管理器和实现方法)
- linked-list-cycle(求进入环中的第一个节点)java
- jQuery实例:输入框下拉提示,仿google suggest
- MySQL中group_concat函数
- QT实现QQ界面
- 【题】【矩阵乘法】NKOJ 3711 摆花
- Cocos Creator 点击事件
- [Spring]动态获取Request对象