在map中,如何让数据按照插入的顺序显示,而不是杂乱无章的显示

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【lily1314】截止到2008-07-07 11:07:50的历史汇总数据(不包括此帖):
    发帖的总数量:67                       发帖的总分数:1160                     
    结贴的总数量:52                       结贴的总分数:950                      
    无满意结贴数:13                       无满意结贴分:340                      
    未结的帖子数:15                       未结的总分数:210                      
    结贴的百分比:77.61 %               结分的百分比:81.90 %                  
    无满意结贴率:25.00 %               无满意结分率:35.79 %                  
    楼主加油
      

  2.   

    使用LinkedHashMap就可以满足你的要求。
      

  3.   

    恩,我开始是map m=new linkedhashmap()这么声明的,后来全改成linked的就可以了.
    谢谢王子和狂人了.
      

  4.   

    某些映射实现可明确保证其顺序,如 TreeMap(有序) 类;某些映射实现则不保证顺序,如 HashMap(无序) 类,
      

  5.   

    哦,结贴给了分,才看到bestaone的回复,不好意思了.
      

  6.   

    办法是有的,重新写比较器:
    static class EntryComparator implements Comparator<Map.Entry<String, Float>> {
      public EntryComparatorAAA() {}   public int compare(Map.Entry<String, Float> o1, Map.Entry<String, Float> o2) {
    //     return o1.getValue().intValue() - o2.getValue().intValue(); //升序排列
      return  o2.getValue().intValue() -o1.getValue().intValue();//降序排列
      }
    }
     @SuppressWarnings("unchecked")
    public static Map<String, Float> outputSortedHashMap(HashMap<String, Float> map) {
     Map<String, Float> tempMap = new LinkedHashMap<String, Float>();
        List<Map.Entry<String, Float>> list = new ArrayList<Map.Entry<String, Float>>(map.entrySet());
        Collections.sort(list,new EntryComparator());

        Iterator<Map.Entry<String, Float>> i = list.iterator();
        while (i.hasNext()) {
          Map.Entry<String, Float> entry = i.next();
          tempMap.put(entry.getKey(),entry.getValue());
          System.out.println("key=" + entry.getKey() + ", value=" + entry.getValue());
         
        }
        
        return tempMap;
    }