comparaTo方法將元素進行了排序。最後將排序後的元素添加到sortedEntries裏
Comparable接口是壹個內置的可以自定義排序方式的內置接口,比如Integer,char等包裝類內部都實現了Comparable接口來自定義壹個排序的方式,實現的方法是compareTo(value){
//在代碼中,返回0,1,-1 3個參數 分別對應1交換位置-1不交換 0 比較的兩個值相同。
}
static <K,V extends Comparable<? super V>>
//壹個靜態的 類型必須是鍵值對並且是實現了Comparable接口的類型
SortedSet<Map.Entry<K,V>> entriesSortedByValues(Map<K,V> map) {
//排序集合傳入壹個Map的靜態對象並且鍵值對是K/V類型的入口排序按照他的值
//前邊壹整段應該都是名字寫的比較規範吧,知識有限只能了解這麽多
//括號中是參數傳入的是壹個Map類型的參數 map
SortedSet<Map.Entry<K,V>> sortedEntries = new TreeSet<Map.Entry<K,V>>(
//實例壹個對象 sortedEntries 他接收的是壹個TreeSet類型的變量保存的是指定的類型
//也就是Map.Entry<k,v>類型
new Comparator<Map.Entry<K,V>>() {
//排序沒有使用內置排序接口Comparable而是使用的Comparator他和Comparable的
//區別就是壹個是排序方法寫在實現了Comparable接口的內部
//壹個是當元素需要調用sort時才使用
@Override public int compare(Map.Entry<K,V> e1, Map.Entry<K,V> e2) {
//重寫了Comparator內部的compara方法 返回壹個int值
int res = e2.getValue().compareTo(e1.getValue());
//最後的實際排序還是使用的Comparable接口的comparaTo方法
//寫的有點啰嗦 應該是可以直接用Comparable排序的又new 了壹個
//Comparator,他是把兩種排序方式組合使用了,Comparable定義了排序的方式
//Comparator執行排序的操作
return res != 0 ? res : 1;
//返回結果 如果res不等於0 為真就返回res的值,假返回1
}
}
);
sortedEntries.addAll(map.entrySet());
//代碼截的不全 這應該是排序後將元素添加到整個隊列中。
return sortedEntries;
//然後將整個隊列返回
//個人理解有不對的地方諒解。
}