gpt4 book ai didi

java - 用 Java 编写 Pair 的比较器

转载 作者:太空宇宙 更新时间:2023-11-04 12:32:27 25 4
gpt4 key购买 nike

我有一个包含字符串和日期列表的对象:

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 is a raw type. References to generic type Comparator<T> should be parameterized.

p1 和 p2 的类型转换:

Type safety: Unchecked cast from Object to 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)

我收到各种错误,找不到配对和找不到字符串,并且没有导入它们的选项。

那么我做错了什么?

最佳答案

就用这个

Comparator<Pair<String, Date>> mycomp = new Comparator<Pair<String, Date>>(){

您将不再需要进行转换,因为您的 compare 方法将是

 public int compare(Pair<String, Date> o1, Pair<String, Date> o2) 

关于java - 用 Java 编写 Pair<String, Date> 的比较器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37705122/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com