我是Java新手。 我實現Comparator接口&我有以下的compareTo功能: -什麼是可比較的類型鑄造&Map.Entry?
public int compare(Object o1, Object o2) {
Map.Entry e1 = (Map.Entry) o1;
Map.Entry e2 = (Map.Entry) o2;
return ((Comparable) e1.getValue()).compareTo(e2.getValue());
}
我無法理解這是什麼線意味着
Map.Entry e1 = (Map.Entry) o1;
什麼用兩個Map.Entry
? ?
爲什麼Comparable
在類型casting?
有人請給我一個參考,以便我能弄明白。 謝謝。
編輯: - 這裏是我的全班同學,我有一個HashMap 我想通過使用泛型類值進行排序,因此寫這個類
package via;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
public class SortMap<K, V> {
public Map<K, V> getSortedMap(Map<K, V> mapToSort) {
List<Map.Entry> list = new ArrayList<Map.Entry>(mapToSort.entrySet());
Collections.sort(list, new Comparator() {
@Override
public int compare(Object o1, Object o2) {
Map.Entry e1 = (Map.Entry) o1;
Map.Entry e2 = (Map.Entry) o2;
return ((Comparable) e2.getValue()).compareTo(e1.getValue());
}
});
Map sortedMap = new LinkedHashMap();
for(Iterator i=list.iterator();i.hasNext();)
{
Map.Entry entry=(Map.Entry)i.next();
sortedMap.put(entry.getKey(), entry.getValue());
}
System.out.println(list);
return sortedMap;
}
}
你可以發佈完整的課程嗎?你應該實現參數化的比較器而不是原始類型。 –
看起來你正在實現* raw *'Comparator'接口 - 任何你沒有將它作爲Comparator>或其他實現的原因? –
正如我前面提到的,我是新的蜜蜂,所以不知道這裏發生了什麼。 我對此只有很少的想法。 – NamingException