我创建了一个小实用程序,它可以帮助我按值对地图进行排序(根据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));
}
}
现在,在我的IntelliJ 10 IDE中,代码运行并完成我期望的工作。
但是如果我尝试通过maven从命令行构建项目,我会收到以下错误:
type parameter V is not within its bound
该错误据说是在 sortMapByValues()方法的第一行
我在IDE中使用JDK 6,我的maven编译器插件也设置为1.6。
任何提示赞赏
答案 0 :(得分:2)
我想这是因为:
V extends Comparable
(在sortMapByValues
中)和V extends Comparable<V>
在课程ValueComparator
中。
将第一个更改为V extends Comparable<V>