用Java编写默认比较器类
我正在用Java实现一个通用堆类。这个类有两个构造函数,一个是没有参数的默认构造函数。另一个接收用户可以传入的comparator对象,以便用户可以控制如何比较堆的元素。现在,如果用户使用默认构造函数,我希望我的类用于默认的比较器对象。此对象的compare方法只调用compareTo()方法(Comparable接口的一部分)。有没有办法做到这一点?如果有,怎么做?我想通用比较器应该是这样的:用Java编写默认比较器类,java,oop,comparator,comparable,Java,Oop,Comparator,Comparable,我正在用Java实现一个通用堆类。这个类有两个构造函数,一个是没有参数的默认构造函数。另一个接收用户可以传入的comparator对象,以便用户可以控制如何比较堆的元素。现在,如果用户使用默认构造函数,我希望我的类用于默认的比较器对象。此对象的compare方法只调用compareTo()方法(Comparable接口的一部分)。有没有办法做到这一点?如果有,怎么做?我想通用比较器应该是这样的: public class ComparableComparator<T extends Com
public class ComparableComparator<T extends Comparable<T>> implements Comparator<T> {
@Override
public int compare(T lhs, T rhs) {
return lhs.compareTo(rhs);
}
}
公共类ComparableComparator实现Comparator{
@凌驾
公共整数比较(左、右){
返回左侧比较(右侧);
}
}
我想通用比较器应该是这样的:
public class ComparableComparator<T extends Comparable<T>> implements Comparator<T> {
@Override
public int compare(T lhs, T rhs) {
return lhs.compareTo(rhs);
}
}
公共类ComparableComparator实现Comparator{
@凌驾
公共整数比较(左、右){
返回左侧比较(右侧);
}
}
使用ApacheCommons,获取任意两个对象
s,如果它们实现了可比
,则对它们进行比较
或者,不使用comparator的构造函数应该强制执行K extensed Comparable
类型参数。从Apache Commons使用,它接受任意两个对象
并在它们实现Comparable
时进行比较
或者,不使用comparator的构造函数应该强制执行
K extensed Comparable
类型参数。Guava提供了“自然排序”comparator
,正如可以预见的那样--Guava提供了“自然排序”Comparator
as--可以预见--Java8具有Comparator.naturalOrder()
,您可以将其用作默认的比较器。有关详细信息,请参阅。Java8具有Comparator.naturalOrder()
,您可以将其用作默认的比较器。有关详细信息,请参阅。是否应该进行比较?是否应该进行比较?