Так что я пытаюсь использовать сортировку вставки с общим компаратором, который должен быть передан. Я не могу изменить имя метода. Как мне пойти на внедрение компаратора для перехода в метод insertionSort? Я новичок в Java и объектно-ориентированном программировании.Как реализовать общий компаратор?
Тест - это всего лишь тест на юниты.
public class SortUtil {
public static <T> void insertionSort(ArrayList<T> dataSet, int left, int right, Comparator<? super T> Comparator)
{
for(int i = left + 1; i <= right; i++)
{
T item = dataSet.get(i);
int j;
if (dataSet != null)
{
for(j = i - 1; (j >= left) && (Comparator.compare(dataSet.get(j), item)) > 0; j--)
{
dataSet.set(j + 1, dataSet.get(j)) ;
}
dataSet.set(j + 1, item);
}
}
}
public void test() {
Comparator<? super T> Comp = null;
ArrayList<T> temp = (ArrayList<T>) SortUtil.generateBestCase(10);
SortUtil.insertionSort(temp, 0, temp.size(), Comp);
}
}
Как объекты вы передаете в сравнение друг с другом? Будет ли смысл пытаться выполнить вызов «.equals»? – Makoto
Он должен иметь возможность сравнивать любой переданный тип, будь то его строки или целые числа, чтобы отсортировать их. – cjoy
Я также должен использовать Comparator.compare для сортировки. – cjoy