Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用Java编写默认比较器类_Java_Oop_Comparator_Comparable - Fatal编程技术网

用Java编写默认比较器类

用Java编写默认比较器类,java,oop,comparator,comparable,Java,Oop,Comparator,Comparable,我正在用Java实现一个通用堆类。这个类有两个构造函数,一个是没有参数的默认构造函数。另一个接收用户可以传入的comparator对象,以便用户可以控制如何比较堆的元素。现在,如果用户使用默认构造函数,我希望我的类用于默认的比较器对象。此对象的compare方法只调用compareTo()方法(Comparable接口的一部分)。有没有办法做到这一点?如果有,怎么做?我想通用比较器应该是这样的: public class ComparableComparator<T extends Com

我正在用Java实现一个通用堆类。这个类有两个构造函数,一个是没有参数的默认构造函数。另一个接收用户可以传入的comparator对象,以便用户可以控制如何比较堆的元素。现在,如果用户使用默认构造函数,我希望我的类用于默认的比较器对象。此对象的compare方法只调用compareTo()方法(Comparable接口的一部分)。有没有办法做到这一点?如果有,怎么做?

我想通用比较器应该是这样的:

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()
,您可以将其用作默认的比较器。有关详细信息,请参阅。

是否应该进行比较?是否应该进行比较?