map排序及keyset顺序问题
2016-12-08 22:32
155 查看
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 ##
5
4 3 2 1 ## TreeMap ## 1 2 3 4 5 ## HashMap ## 3 2 1 5 4 ## LinkedHashMap ## 1 3 2 5 4
由此可见,大致上如下
Hashtable.keySet() 降序
TreeMap.keySet() 升序
HashMap.keySet() 乱序
LinkedHashMap.keySet() 原序
除了TreeMap.keySet(), JavaDoc中对keySet()返回值的顺序没有明确说明,
实际应用中,如果对顺序有明确要求,最好能明确的对其顺序进行整理。
感谢:http://www.cnblogs.com/csliwei/archive/2012/01/12/2320674.html
相关文章推荐
- 对map创建出来的值顺序排序问题
- Java中Map.keySet()返回值遍历的排序问题
- map关联容器问题,内部数据按照键值的大小排序,无论插入数据的顺序!
- hashtable排序问题【屏蔽hashtable数据访问顺序】
- 关于map中含数字string的排序问题
- 三色球排序的问题,相同的球放到一起,让你按顺序输出红白蓝三种颜色的球,可以用012来表示,要求只能扫描一次数组
- 数字排序问题(逆序,顺序)(冒泡排序法,选择排序法)
- 如何实现在客户端,使CheckBox按照选择的顺序进行排序--来自博问的问题
- Java中keySet()返回值的排序问题
- mysql in 排序问题:可以按in里面的顺序来排序
- java map 排序的问题
- LinkedHashMap 根据PUT顺序排序Map
- 顺序从map中读取记录的问题
- LinkedHashMap 根据PUT顺序排序Map
- map 排序问题
- mysql in 排序问题:可以按in里面的顺序来排序
- 关于map中含数字string的排序问题
- Java中keySet()返回值的排序问题
- 关于map的排序问题。
- mysql 组合字段排序 创建组合索引 顺序问题