Создание метода CompareTo в Java с одним параметром - PullRequest
1 голос
/ 21 июня 2011

У меня есть вопрос о создании compareTo функции в Java.

В Java у нас есть метод String.compareTo(String).

Однако мне нужно сделать функцию compareTo только с одним параметром, например: compareTo(String).

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

Например:

public static boolean compareTo(String word)
{

  private string this.word = word;

   if(word.equals(this.word))
   {
       return true;

    } 
   else
  {
    return false;
  }

}

Это правильная идея?

Нужно ли создавать функции get и set для хранения первого слова для сравнения со вторым словом?

Спасибо

Ответы [ 3 ]

3 голосов
/ 21 июня 2011

Чтобы сравнить два объекта, вам нужно реализовать интерфейс Comparable.В рамках реализации вы напишите свой собственный метод compareTo ().Этот метод сравнивает ваш текущий объект с передаваемым объектом.

public MyObj implements Comparable<MyObj> {

        ...
        public int compareTo(MyObj anObj) {
               // if your obj greater than anObj, return 1
               // if equal, return 0
               // else return -1
        }
}

Далее в вашем коде вы можете сделать -

  `MyObj anObj = new MyObj();
   MyObj anObj1 = new MyObj();
   // anObj.compareTo(anObj1) ....

   // This will also be useful if you have a collection of MyObjs.
   Collections.sort(arrayListOfMyObjs);
1 голос
/ 21 июня 2011

Это не правильная идея во многих отношениях ...

  • Вы не можете использовать this в статической функции.
  • Вы не можете добавить объявление видимости в локальную переменную функции.
  • В Java нет string, но String.
  • Вы делаете this.word равным word, затем проверьте, равны ли они ...
  • Вам не нужно делать if / else, чтобы вернуть логическое значение: просто сделайте return x.equals(y); (не обязательно неправильно, но это личная любимая мозоль ...).
  • compareTo, классический, не equals, но возвращает -1, 0 или 1 в зависимости от того, один объект ниже, равен или выше другого.

Пересмотрите свои уроки ...: -)

0 голосов
/ 21 июня 2011

В вашем коде метод compareTo является статическим, поэтому вы не можете использовать «this». Я полагаю, вам лучше НЕ делать метод сравнения статическим.

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