java.lang.ClassCastException:java.lang.Short在排序时不能转换为java.lang.Integer

java.lang.ClassCastException:java.lang.Short在排序时不能转换为java.lang.Integer,java,sorting,java-7,classcastexception,Java,Sorting,Java 7,Classcastexception,如果值是Shorttypehashmap(),如何按值对hashmap进行排序 当我使用泛型排序时,比如 public static <K extends Comparable<K>, V extends Comparable<V>> Map<K, V> sortByValues(final Map<K, V> map) { Comparator<K> valueComparator = new Comparato

如果值是
Short
type
hashmap()
,如何按值对hashmap进行排序

当我使用泛型排序时,比如

public static <K extends Comparable<K>, V extends Comparable<V>> Map<K, V> sortByValues(final Map<K, V> map) {
    Comparator<K> valueComparator =  new Comparator<K>() {
        public int compare(K k1, K k2) {
            int compare = map.get(k1).compareTo(map.get(k2));
            return compare != 0 ? compare : k1.compareTo(k2);
        }
    };
    Map<K, V> sortedByValues = new TreeMap<K, V>(valueComparator);
    sortedByValues.putAll(map);
    return sortedByValues;
}
公共静态映射SortByValue(最终映射){
比较器值比较器=新比较器(){
公共整数比较(kk1,kk2){
int compare=map.get(k1).compareTo(map.get(k2));
返回比较!=0?比较:k1.比较到(k2);
}
};
Map sortedByValues=新树映射(valueComparator);
sortedByValues.putAll(地图);
返回SortedByValue;
}
我得到这个错误:

java.lang.ClassCastException:java.lang.Short不能转换为java.lang.Integer


此代码中任何地方都没有显式类型转换

因此,我认为
ClassCastException
是由编译器在将某个泛型方法返回的值赋给具有特定类型的变量时插入的隐式类型转换引起的

此外,由于隐式类型转换仅在您/某人选择忽略或禁止Java编译器关于不安全转换的警告等情况下才会失败,因此我得出以下结论:

  • 这一定发生过,而且
  • 这是你问题的原因
简而言之,问题的原因不在问题中包含的代码中。它在别的地方


今后,请确保包括:

  • 足够的上下文让人们了解您的代码是如何使用的。理想情况下,是MCVE
  • 异常的完整堆栈跟踪

输入数据可能与问题重复。您能提供一个调用此方法的小示例吗@Jabob G:我不同意这是重复的,问题是ClassCastException和不按值排序