Использование карты дерева для сортировки по убыванию значений

У меня просто есть реализация карты ниже, чтобы отсортировать значения в порядке убывания, и я использовал реализацию ниже.

public static Map<String,Integer> sortByComparator(Map<String,Integer> unsortMap) {

    List list = new LinkedList(unsortMap.entrySet());

    //sort list based on comparator
    Collections.sort(list, new Comparator() {
        public int compare(Object o1, Object o2) {
            return ((Comparable) ((Map.Entry) (o2)).getValue())
                    .compareTo(((Map.Entry) (o1)).getValue());
        }
    });

    //put sorted list into map again
    Map sortedMap = new LinkedHashMap();
    for (Iterator it = list.iterator(); it.hasNext();) {
        Map.Entry entry = (Map.Entry)it.next();
        sortedMap.put(entry.getKey(), entry.getValue());
    }
    return sortedMap;
}   

Это выполняет необходимые функции. Но мне любопытно узнать, смогу ли я использовать карту дерева для сортировки по убыванию.


person NandaKumar    schedule 27.07.2012    source источник


Ответы (2)


Вы этого не сделаете, поскольку TreeMap сортирует по порядку ключей, а вы сортируете по значению.

person Luciano    schedule 27.07.2012

Нет, порядок сортировки TreeMap основан на ключ. Все остальные требования к сортировке должны быть реализованы так же, как и вы.

person kosa    schedule 27.07.2012