Java中keySet()返回值的排序问题

来源:互联网 发布:360全景效果图软件 编辑:程序博客网 时间:2024/06/15 20:44
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());        }    }}
<pre name="code" class="plain">输出结果如下:
<pre name="code" class="sql">
##  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
0 0
原创粉丝点击