Последовательность карт Java - PullRequest
2 голосов
/ 10 декабря 2011
    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());
    }

При печати письма я могу получить abcdefg ..... но после сохранения в hashmap возвращает мне fgdeb c ..... не по порядку, почему?

Ответы [ 4 ]

3 голосов
/ 10 декабря 2011

HashMap не заказан. Если вы хотите получить записи в порядке вставки, используйте LinkedHashMap.

2 голосов
/ 10 декабря 2011

java.util.HashMap не заказанная коллекция.

1 голос
/ 10 декабря 2011

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;
    }
  }
}
0 голосов
/ 10 декабря 2011

Hashmap не упорядочен. Я знал об этом только после использования TreeMap. Но это хорошо работает при работе с датами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...