假设有以下两个类型T和U的通用类:
需要根据第一/第二属性对其进行排序。不幸的是,类定义存在一些问题,会出现以下错误:
如何设计比较器类?这段代码很可能是完全错误的。
感谢您的帮助。
public class Pair<T, U> implements Comparable<T, U> { //Error 1
private final T first;
private final U second;
public Pair(T first_, U second_) {
first = first_;
second = second_;}
public T getFirst() { return first; }
public U getSecond() { return second; }
}
以及其项目列表
List<Pair<Integer, Integer>> = new ArrayList<>()
需要根据第一/第二属性对其进行排序。不幸的是,类定义存在一些问题,会出现以下错误:
Error 1: wrong number of type arguments
如何设计比较器类?这段代码很可能是完全错误的。
public class SortBySecond implements Comparable <Pair <T, U>> {
public int compare(final Pair<T, U> p1, final Pair<T, U> p2) //Error 2
{
return t1.getSecond().compareTo(t2.getSecond()); //Updated comparator
}
}
Error 2 : Can not find symbols T, U, V
感谢您的帮助。
<
和>
来比较泛型类型,这些符号只适用于原始类型。相反,尝试使用类似return p1.getSecond().compareTo(p2.getSecond());
的方法。 - azurefrogPair
类实现Comparable
接口。谁知道T
或U
是否可比较?如果用户想要对他们的pair进行排序,就让他们自己创建一个自定义的Comparator
吧,这样他们可以决定是按第一个字段、第二个字段、还是组合排序等等。 - John Kugelman