Java映射序列

时间:2011-12-10 07:00:34

标签: java hashmap

    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());
    }

当打印这封信时,我可以得到一个...但是在存储在散列图中后,它会返回给我,而不是依次为什么?

4 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:2)

java.util.HashMap不是有序集合。

答案 2 :(得分: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;
    }
  }
}

答案 3 :(得分:-1)

Hashmap没有订购..我在使用TreeMap后才知道这一点。但是在处理日期时这对我很有用