比较器作为类的构造函数的参数

问题描述 投票:0回答:1

我似乎在任何地方都找不到确切的方法。我正在编写一个将比较器作为类的构造函数的参数/自变量的类。我想用它来排序列表中的项目。但是我不确定如何使用新类中的比较器。

  • 我已经导入java.util.Comparator
  • 在类声明中,我说“ impements Comparator<T>
  • 我已经写了(Comparator<T> c)作为类的构造函数的参数。

我从未以这种方式使用比较器-我已经将其用作内部类,就是这样,所以当我将比较器作为参数时,我不确定如何使compare方法在此类中工作给构造函数。

我唯一要做的就是上面的三个项目符号。每当我尝试使用比较器作为参数时,都会收到错误消息。

这是构造函数的代码:

//value, position and array are instance variables

public SortedList(Comparator<T> c){
   this.value = value;
   this.position = position;
   this.array = new Integer[25];
}

public void sort(Integer num){
   boolean valid = false;
   int i = 0;

   while(!valid && i < array.length-1){
      if(num.compare(array[i] > 0)){
        array[i+1] = array[i];
        array[i] = num;
      }else{
        i++;
   }
}

我一直收到的错误消息是:

  • 找不到“ compare”或“ compareTo”方法

我希望能够比较任意两个对象,而不仅仅是整数,这就是为什么我想将比较器作为参数。

java comparator comparable
1个回答
0
投票

尚不清楚您的问题,但您的代码段中唯一的类似于收藏的结构是整数对象的数组。因此,在这里排序的唯一明智的方法就是该数组。

您需要Comparator<Integer>进行排序,而不是Comparator<T>

一旦有了,对数组进行排序,您所需要做的就是..

Arrays.sort(array, c);
© www.soinside.com 2019 - 2024. All rights reserved.