【发布时间】:2011-01-02 05:31:03
【问题描述】:
背景
创建一个可以按值排序的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> 的语法(其中V 必须是Comparable?)——这样可以删除警告中显示的(Comparable) 类型转换——躲着我。
警告
编译器的抱怨:
SortableValueMap.java:24: 警告:[unchecked] 作为原始类型 java.lang.Comparable 的成员对 compareTo(T) 的未经检查调用
return ((Comparable)entry1.getValue()).compareTo( entry2.getValue() );
问题
如何更改代码以在没有任何警告的情况下进行编译(在使用-Xlint:unchecked 编译时不抑制它们)?
相关
- TreeMap sort by value
- Sort a Map<Key, Value> by values (Java)
- http://paaloliver.wordpress.com/2006/01/24/sorting-maps-in-java/
谢谢!
【问题讨论】:
标签: java generics collections comparator comparable