2011-12-10 156 views
2
private java.util.HashMap<Character, Boolean> letters = new java.util.HashMap<Character, Boolean>(); 

    for (int i = 0; i < 26; i++) { 
     letters.put(letter, false); 
     System.out.println(letter); 
     letter++; 
    } 
    for (Map.Entry<Character, Boolean> v : letters.entrySet()) { 
     System.out.println(v.getKey()); 
    } 

当打印信件时,我可以得到一个b c d e f g .....但在存储在hashmap中后,它会返回给我f g d e b c .....为什么?爪哇地图序列

+0

对我的回答看看.. –

回答

3

HashMap未订购。如果要检索广告订单中的条目,请改为使用LinkedHashMap

2

java.util.HashMap未订购集合。

-1

的Hashmap不ordered..I只知道这用TreeMap..but与日期

1

的HashMap打交道时,对我来说效果很好是不是没有排序,也没有订单后,您可以使用TreeMap。它按自然顺序或自定义比较规则排序。

一个例子:

public class Main { 

    public static void main(String[] args) { 

     HashMap<String,Double> map = new HashMap<String,Double>(); 
     ValueComparator bvc = new ValueComparator(map); 
     TreeMap<String,Double> sorted_map = new TreeMap(bvc); 

     map.put("A",99.5); 
     map.put("B",67.4); 
     map.put("C",67.5); 
     map.put("D",67.3); 

     System.out.println("unsorted map"); 
     for (String key : map.keySet()) { 
      System.out.println("key/value: " + key + "/"+map.get(key)); 
     } 

     sorted_map.putAll(map); 

     System.out.println("results"); 
     for (String key : sorted_map.keySet()) { 
      System.out.println("key/value: " + key + "/"+sorted_map.get(key)); 
     } 
    } 

} 

class ValueComparator implements Comparator { 

    Map base; 
    public ValueComparator(Map base) { 
     this.base = base; 
    } 

    public int compare(Object a, Object b) { 

    if((Double)base.get(a) < (Double)base.get(b)) { 
     return 1; 
    } else if((Double)base.get(a) == (Double)base.get(b)) { 
     return 0; 
    } else { 
     return -1; 
    } 
    } 
}