簡體   English   中英

java.lang.ClassCastException:排序時無法將java.lang.Short強制轉換為java.lang.Integer

[英]java.lang.ClassCastException: java.lang.Short cannot be cast to java.lang.Integer when sorting

如果值是Short類型HashMap<Long, Short>()如何按值對哈希圖排序?

當我使用通用排序

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;
}

我收到此錯誤:

java.lang.ClassCastException:無法將java.lang.Short強制轉換為java.lang.Integer

此代碼中的任何地方都沒有顯式的類型轉換。

因此,我得出的結論是, ClassCastException是由將某些通用方法返回的值分配給具有特定類型的變量時編譯器插入的隱式類型轉換引起的。

此外,由於隱式類型轉換僅在您/某人選擇忽略或禁止有關不安全轉換等的Java編譯器警告的情況下失敗,因此我得出結論:

  • 這一定發生了,並且
  • 這是造成您問題的原因。

簡而言之,問題的原因不在問題中包含的代碼中。 在別的地方...


將來,請確保包括:

  • 足夠的上下文,使人們可以看到如何使用您的代碼。 理想情況下是MCVE。
  • 異常的完整堆棧跟蹤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM