Я создал небольшую утилиту, которая помогает мне сортировать карту по значениям (основываясь на одном из ответов StackOverflow, чтобы дать кредит):
public static <K, V extends Comparable> Map<K, V> sortMapByValues(Map<K, V> original) {
final ValueComparator<K, V> comparator = new ValueComparator<K, V>(original);
final Map<K, V> sorted = new TreeMap<K, V>(comparator);
sorted.putAll(original);
return sorted;
}
И ValueComparator :
static class ValueComparator<K, V extends Comparable<V>> implements Comparator<K> {
private final Map<K, V> base;
public ValueComparator(Map<K, V> base) {
this.base = base;
}
public int compare(K a, K b) {
return base.get(b).compareTo(base.get(a));
}
}
Теперь это работает довольно хорошо, когда в моей IDE IntelliJ 10 код выполняется и выполняет то, что я ожидаю.
Но если я пытаюсь собрать проект с помощью maven из командной строки, я получаю следующую ошибку:
type parameter V is not within its bound
Ошибка, как говорят, находится в первой строке sortMapByValues () метод
Я использую JDK 6 в своей IDE, и мой плагин для компилятора maven также установлен на 1.6.
Любые советы приветствуются