Java 通用可与“可比”;“违反其总合同的比较法”;
我有一个通用方法,它按值对Java 通用可与“可比”;“违反其总合同的比较法”;,java,sorting,generics,comparator,comparable,Java,Sorting,Generics,Comparator,Comparable,我有一个通用方法,它按值对映射进行排序: public static <K, V extends Comparable<? super V>> Map<K, V> sortByValue(Map<K, V> map) { Map<K, V> result = new LinkedHashMap<>(); Stream<Map.Entry<K, V>> st = map.entrySet
映射进行排序:
public static <K, V extends Comparable<? super V>> Map<K, V> sortByValue(Map<K, V> map) {
Map<K, V> result = new LinkedHashMap<>();
Stream<Map.Entry<K, V>> st = map.entrySet().stream();
st.sorted(Map.Entry.comparingByValue()).forEachOrdered(e -> result.put(e.getKey(), e.getValue()));
return result;
}
公共静态我们无法知道。该错误告诉您的是,您的V
类型不正确地实现了compareTo
。您还没有告诉我们您的V
类型是什么,或者它的比较是如何工作的。您向我们展示的代码没有问题,错误在别处。问题在于V
类上的compareTo
方法。最常见的情况是,您的关系不是可传递的,例如,错误比较空值或具有a==b
和b==c
但a!=c
@LouisWasserman Oh。实际上。。。回答了我的问题。当我试图找出上面代码中的错误时,我没有看我应该看的地方。我确实认为那是有罪的。不过,我不会投票结束这个问题——我可以看到它对某人有帮助。我们无法知道。该错误告诉您的是,您的V
类型不正确地实现了compareTo
。您还没有告诉我们您的V
类型是什么,或者它的比较是如何工作的。您向我们展示的代码没有问题,错误在别处。问题在于V
类上的compareTo
方法。最常见的情况是,您的关系不是可传递的,例如,错误比较空值或具有a==b
和b==c
但a!=c
@LouisWasserman Oh。实际上。。。回答了我的问题。当我试图找出上面代码中的错误时,我没有看我应该看的地方。我确实认为那是有罪的。不过,我不会投票结束这个问题——我可以看到它对某些人有帮助。