l_holdsamount_map.put(33, 1.0);//
        
        l_holdsamount_map.put(34, 2.0);// 
        l_holdsamount_map.put(36, 1.0);// 
        Iterator keyValuePairs1 = l_holdsamount_map.entrySet().iterator(); for (int icount = 0; icount < l_holdsamount_map.size(); icount++) {
Map.Entry entry = (Map.Entry) keyValuePairs1.next();
Object tid = entry.getKey();
Object damount = entry.getValue();
System.out.println(tid+","+damount);
}上面这段代码 输出 为:
34,2.0
33,1.0
36,1.0我明明是按照 
33,1.0
34,2.0
36,1.0
添加的,输出的时候顺序怎么变了,这个是怎么回事的呀!

解决方案 »

  1.   

    hashmap是依据hashcode返回结果决定存储顺序的 不是按照添加顺序存储的 
      

  2.   

    可能Key对应着 内部有一个排序在里面
      

  3.   

    LZ应该先看看HashMap的API,HashMap是用Hash算法来实现的,当然了Hash算法在数据机构里也说得很清楚,如果你不想关心这些的话,只要记住:HashSet和HashMap是无序的·· 另外HashSet是中的元素不能重复的··
      

  4.   

    hashmap的输出是没有顺序的
    如果要顺序的话可以用:java.util.LinkedHashMap 它是有序的
      

  5.   

    如果你想排序 可以用TreeMap能实现排序 Map m=new TreeMap();
      

  6.   

    package com.study.jdk.maputil;import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.Collection;
    import java.util.Collections;
    import java.util.HashMap;
    import java.util.Iterator;
    import java.util.List;
    import java.util.Map;
    import java.util.Map.Entry;import org.apache.commons.collections.CollectionUtils;public class MapUtil {

    public static void main(String  [] args ){

    HashMap map = new HashMap();

    map.put(34, 1.0);
    map.put(33, 2.0);
    map.put(36, 1.0);

    Iterator it = map.entrySet().iterator();

    // while(it.hasNext()){
    // Map.Entry entry = (Map.Entry)it.next();
    // System.out.println(entry.getKey()+"--"+entry.getValue());
    // }

    for (int icount = 0; icount < map.size(); icount++) { 
    Map.Entry entry = (Map.Entry)it.next();
    System.out.println(entry.getKey()+"--"+entry.getValue());
    }


    }}我的输出结果是:
    34--1.0
    36--1.0
    33--2.0map 是无序的 要想有序的输出就要用到 Collections.sort() 方法或者实现 Comparable 接口
      

  7.   

    HashMap 实现的Map是无序的
    linkedHashMap 实现的Map才是有序的
      

  8.   

    HashMap 实现的Map是无序的 linkedHashMap 实现的Map才是有序的这刚好就是他们之间的差别