Кажется, я нигде не могу точно найти, как это сделать. Я пишу класс, который принимает компаратор в качестве параметра / аргумента для конструктора класса. Я хочу использовать это для заказа элементов в списке. Но я не уверен, что делать с компаратором в новом классе.
- Я импортировал
java.util.Comparator
- В объявлении класса я сказал "
impements Comparator<T>
" - Я написал (
Comparator<T> c
) в качестве аргумента для конструктора класса.
Я никогда не использовал компаратор таким образом - я использовал его как внутренний класс, и это так, поэтому я не уверен, как заставить метод сравнения работать в этом классе, когда я беру компаратор в качестве аргумента для конструктора.
Единственное, что я сделал, - это три маркированных пункта выше. Каждый раз, когда я пытаюсь что-то сделать с компаратором, который я принимаю в качестве аргумента, я получаю сообщение об ошибке.
Вот код для конструктора:
public class SortedList<T> implements Comparator<T>
//value, position and array are instance variables
//I am switching array to a List to deal with generics
private int position;
private Integer[] array;
public SortedList(Comparator<T> c){
this.position = 0;
this.array = new Integer[25];
}
public void sort(Integer num){
boolean valid = false;
int i = 0;
while(!valid && i < array.length-1){
if(num.compareTo(array[i] > 0)){
array[i+1] = array[i];
array[i] = num;
}else{
i++;
}
}
У меня есть сообщения об ошибках были получены следующие данные:
- Не удается найти символ - метод compareTo
Я хотел бы иметь возможность сравнивать любые два объекта, а не только целые числа, поэтому я хотел возьмите компаратор в качестве параметра.