Оператор> не определен для типов аргументов. Java.lang.Object, java.lang.Object. - PullRequest
0 голосов
/ 01 июня 2018
public void sort(){
    //TO DO
    int k = start;
    int temp = 0;
    for(int i=0; i<size-1; i++){
          for(int j=0; j<size-1; j++){
                if((cir[(k % cir.length)]) > cir[((k+1) % cir.length)]){
                      temp = cir[(k % cir.length)];
                      cir[k%cir.length] = cir[(k+1)%cir.length];
                      cir[(k+1)%cir.length] = temp;
                }
                k = (k+1)%cir.length;
          }
    }
}

// Здесь тип cir [] - это объект.но почему эта проблема возникает?

Ответы [ 2 ]

0 голосов
/ 01 июня 2018

Другие уже упоминали об этом, но я повторюсь: если вы хотите написать какой-то общий метод сортировки, вы бы хотели либо предоставить Comparator, либо чтобы элементы реализовали Comparable.

сОбобщения, ваши методы могут выглядеть следующим образом:

public <T extends Comparable<T>> void sort(T[] array) { ... }
public <T> void sort(T[] array, Comparator<T> comparator) { ... }

Оба варианта требуют, чтобы пользователь предоставил некоторый код, который определяет, как <, == и > определены для рассматриваемых объектов (методыComparable.compareTo(right) или Comparator.compare(left, right) возвращает отрицательное (обычно -1) int, 0 или положительное целое (обычно 1) для указания <, == или >).

В общем,вы можете использовать Comparable, если вы можете определить естественный (по умолчанию) порядок, например, если вы будете работать с массивом людей, они обычно могут быть упорядочены по имени.

Comparator, с другой стороны, более гибок и обычно используется, если вы не можете или не хотите использовать порядок по умолчанию.В этом случае вы предоставляете компаратор для каждого случая, например, когда вы хотите отсортировать автомобили по цене или скорости, вы предоставляете компаратор, который внутренне сравнивает цены или скорость.

Обратите внимание, что этоне работает для таких примитивов, как int и т. д. Таким образом, вам придется либо преобразовать их в их классы-обертки, например, Integer, либо предоставить пользовательские методы, использующие «обычные» операторы.

0 голосов
/ 01 июня 2018

Операторы <,> не определены для Object.Как бы вы их сравнили?Определите метод для класса объекта, который вы используете.Скажи greaterThan(YourObjectType otherobject).Затем выполните это в соответствии с тем, как вы хотите сравнить.Это зависит от YourObjectType.

Редактировать .Реализуйте интерфейс Comparable, добавленный в комментарии.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...