import java.util.*;public class Test
{
//@unchecked
public static void main(String[] args)
{
Map map = new HashMap();
map.put("First",1);
map.put("second",2);
map.put("third",3);
for (Object obj :map.keySet() )
{
System.out.println(obj+":"+map.get(obj));
}
}
}结果却是:second:2
First:1
third:3
为什么不是
First:1
second:2
third:3
呢?Javamap对象

解决方案 »

  1.   

    HashMap貌似本来就不是按照录入顺序排列的,而是哈希表
      

  2.   

    HashMap类是散列映射并不保证它的元素顺序
    TreeMap则提供了按照键进行排序的功能
    LinkedHashMap,保留键的插入顺序
    另外可以用compareTo或compare方法生成自己所想要键顺序
      

  3.   

    package csdn.programbbs_525;import java.util.*;
    /**
     * 输出:first:1
     *     second:2
     *     third:3
     */
    public class TestTreeMap {
    public static void main(String[] args) {
    Map<String, Integer> m = new TreeMap<String, Integer>();
    m.put("second", 2);
    m.put("third", 3);
    m.put("first", 1);

    for (Object obj :m.keySet() )
            {
                System.out.println(obj+":"+m.get(obj));
            }
    }}package csdn.programbbs_525;import java.util.*;
    /**
     * 输出:
     * second:2
     * third:3
     * first:1
     */
    public class TestLinkedHashMap {
    public static void main(String[] args) {
    Map<String, Integer> m = new LinkedHashMap<String, Integer>();
    m.put("second", 2);
    m.put("third", 3);
    m.put("first", 1);

    for (Object obj :m.keySet() )
            {
                System.out.println(obj+":"+m.get(obj));
            }
    }
    }
      

  4.   

    大哥,hashmap本来就不是有序的列表,可能你每输出一次它的顺序都不一样的,即使你转换成set的,也是无序的,像楼上说的,用TreeMap可以,