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
typehashmap()
,如何按值对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
- 异常的完整堆栈跟踪