我创建了一个小实用程序,可以帮助我按值对 map 进行排序(基于 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。
任何提示表示赞赏
最佳答案
我猜这是因为:
V extends Comparable
(在 sortMapByValues
中)和 V extends Comparable<V>
上课ValueComparator
。
将第一个也更改为 V extends Comparable<V>
关于java - Maven 构建的泛型问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9414770/