[英]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.