Так что я следующий методИзменение подписи одного метода
public static <T extends Comparable<? super T>> void bubbleSort(T[] a)
//public static void bubbleSort(Comparable[] a)
{
for(int top = a.length-1; top > 0; top--)
for(int i = 0; i < top; i++)
if(a[i+1].compareTo(a[i]) < 0)
{ T tmp = a[i];
//Comparabl tmp = a[i];
a[i] = a[i+1];
a[i+1] = tmp;
}
}
Как изменить сигнатуру метода для того, чтобы быть в состоянии назвать его от чего-то вроде
public int sortByTitle()
{
return Sorting.bubbleSort(lib); // (lib is lib = new ArrayList<Object>();
}
Я не должен использовать методы сбора или объект компаратора.
Я получаю следующее сообщение об ошибке компиляции: метод bubbleSort в классе Сортировка не может применяться к заданным типам; required: T [] найдено: java.util.List
@valentin: Как указано в моем ответе, вы не можете передать целый массив объектов по той простой причине, что класс 'Object' не реализует интерфейс' Comparable', который вам нужен для вашего механизма сортировки пузырьков Работа. Как я и предложил в ответ, вам нужно будет использовать другой тип данных, который реализует интерфейс 'Comparable'. Как только вы это сделаете, вы сможете заставить его работать. (Пожалуйста, соблюдайте другие предложения, которые я сделал) – npinti
Но если я использую список массивов, как вы предлагаете, не означает ли это, что я должен использовать методы списка, чтобы получить такие вещи, как верх и низ, чтобы запускать его? Я ищу что-то, что не должно использовать методы коллекционирования или объект-компаратор ... Я немного смущен :( – valentin