我似乎在任何地方都找不到确切的方法。我正在编写一个将比较器作为类的构造函数的参数/自变量的类。我想用它来排序列表中的项目。但是我不确定如何使用新类中的比较器。
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++;
}
}
我一直收到的错误消息是:
我希望能够比较任意两个对象,而不仅仅是整数,这就是为什么我想将比较器作为参数。
尚不清楚您的问题,但您的代码段中唯一的类似于收藏的结构是整数对象的数组。因此,在这里排序的唯一明智的方法就是该数组。
您需要Comparator<Integer>
进行排序,而不是Comparator<T>
。
一旦有了,对数组进行排序,您所需要做的就是..
Arrays.sort(array, c);