我有一個包含字符串列表和日期的對象在Java中的比較:寫作對<字符串,日期>
List<Pair<String, Date>> res;
然後我寫了一個比較
Comparator mycomp = new Comparator() {
@Override
public int compare(Object o1, Object o2) {
if ((o1.getClass().equals(ImmutablePair.class))
&& (o2.getClass().equals(ImmutablePair.class))) {
Pair<Integer, Date> p1 = (Pair<Integer, Date>) o1;
Pair<Integer, Date> p2 = (Pair<Integer, Date>) o1;
return comPair(p1, p2);
}
throw new AssertionError("Unknown Types");
}
public int comPair(Pair<Integer, Date> p1, Pair<Integer, Date> p2) {
return p1.getValue().compareTo(p2.getValue());
}
};
這工作,但我有幾個警告。
第一行:
比較是原始類型。應該參考通用類型
Comparator<T>
的參數。
鑄造P1和P2:
類型安全:未選中從
Object
轉換爲Pair<Integer,Date>
因爲我認爲我與Pair<String, Date>
檢查型鑄造。 作爲宣言,Comparator mycomp = new Comparator()
,我儘量把new Comparator(Pair<String, Date>)
我得到這個:
- 比較是一種原始類型。引用泛型類型
Comparator<T>
應該是參數令牌 - 語法錯誤「>」,表達希望此令牌
後,如果我試圖把一個對象名稱 Comparator mycomp = new Comparator(Pair<String, Date> obj)
我得到的各種錯誤該對未找到且未找到字符串,並且沒有導入它們的選項。
那麼我做錯了什麼?
我明白什麼是原始類型(至少在一般情況下),但我不明白我在這裏沒有進行類型檢查。 – Tony
當您使用'比較器'時,您正在使用'Comparator'比較儀' –
請您在訂購前後給出一些數據示例。 – bilelovitch