簡體   English   中英

按降序對地圖進行排序

[英]Sorting Map in descending order

我實際上是通過以下示例進行此工作的:

static <K,V extends Comparable<? super V>> 
        List<Entry<K, V>> entriesSortedByValues(Map<K,V> map) {

List<Entry<K,V>> sortedEntries = new ArrayList<Entry<K,V>>(map.entrySet());

Collections.sort(sortedEntries, 
        new Comparator<Entry<K,V>>() {
            @Override
            public int compare(Entry<K,V> e1, Entry<K,V> e2) {
                return e2.getValue().compareTo(e1.getValue());
            }
        }
);

return sortedEntries;
}

在這個網站上找到它 這里。

現在,我已經實現了此代碼,並且可以正常工作。 我了解大部分情況。 我唯一不完全了解的代碼部分是在方法標頭中,尤其是:

static <K,V extends Comparable<? super V>>  

如果有人可以向我解釋代碼的這一部分,我將不勝感激。 特別是為什么我應該在這種情況下使用super。

我對Java還是很陌生,因此嘗試對使用不同的技術有一個很好的了解,而不僅僅是在不真正了解發生情況的情況下將它們扔到我的代碼中。

注意:我會對原始答案發表評論,但是只有當我的聲譽超過50時,我才可以發表評論。我希望我不會通過發布這樣的規則來違反任何規則!

這個想法是V至少可以與其他V s媲美,但也可以與其他類型V媲美-也就是說,可以與V任何超類型相媲美。

這條線使該方法通用。 您可以在類標題或方法聲明中使用通用類型 在這種情況下,方法聲明。

static <K,V extends Comparable<? super V>>  

聲明一個無界的通用類型K 這意味着它可以是Object類型的任何子類。 然后,它聲明第二種類型V ,必須實現Comparable接口。 還對Comparable實現進行類型化,並且該方法為此添加了一個界限,指出Comparable類應該能夠與泛型V的超類型中的任何一個進行比較。

額外閱讀

暫無
暫無

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

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