背景
创建一个Map
可以按值排序的。
问题
代码按预期执行,但编译不干净:
public class SortableValueMap<K, V> extends LinkedHashMap<K, V> {
...
public void sortByValue() {
...
Collections.sort( list, new Comparator<Map.Entry>() {
public int compare( Map.Entry entry1, Map.Entry entry2 ) {
return ((Comparable)entry1.getValue()).compareTo( entry2.getValue() );
}
});
...
Comparable
将作为通用参数传递给Map.Entry<K, V>
(where V
must be ?)的语法Comparable
——以便(Comparable)
可以删除警告中显示的类型转换——让我无法理解。
警告
编译器的脾气暴躁的抱怨:
SortableValueMap.java:24: 警告: [unchecked] unchecked call to compareTo(T) as a member of raw type java.lang.Comparable
return ((Comparable)entry1.getValue()).compareTo( entry2.getValue() );
问题
如何更改代码以在没有任何警告的情况下进行编译(在使用 编译时不抑制它们-Xlint:unchecked
)?
有关的
- TreeMap 按值排序
- 按值对 Map<Key, Value> 进行排序 (Java)
- http://paaloliver.wordpress.com/2006/01/24/sorting-maps-in-java/
谢谢!