[英]Java Generics: Sort Map by Value
嘗試編譯以下函數來排序通用映射我得到此錯誤:
"The method compareTo(V) is undefined for the type V"
請幫助完成這項工作!
public class CollectionsPlus<K,V> {
/**
* Sort map by value
* @param map
* @return
*/
public static<K,V> Map<K, V> sortMapByValue(Map<K, V> map) {
List<Map.Entry<K, V>> list = new LinkedList<Map.Entry<K, V>>(
map.entrySet());
Collections.sort(list,
new Comparator<Map.Entry<K, V>>() {
public int compare(Map.Entry<K, V> o1,
Map.Entry<K, V> o2) {
return (o2.getValue().compareTo(o1.getValue()));
}
});
Map<K, V> result = new LinkedHashMap<K, V>();
for (Iterator<Map.Entry<K, V>> it = list.iterator(); it.hasNext();) {
Map.Entry<K, V> entry = it.next();
result.put(entry.getKey(), entry.getValue());
}
return result;
}
}
你需要讓V
實現Comparable
。 您可以通過以下方式明確要求:
public static<K, V extends Comparable<V>> Map<K, V> sortMapByValue(Map<K, V> map)
或者,您可以將o1.getValue()
和o2.getValue()
為Comparable<V>
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.