1

我有一个关于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 函数来保存第一个单词以与第二个单词进行比较?

谢谢

4

3 回答 3

3

要比较两个对象,您需要实现 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);
于 2011-06-21T04:52:35.520 回答
1

这在很多方面都不是正确的想法......

  • 您不能this在静态函数中使用。
  • 您不能将可见性声明添加到函数的局部变量。
  • 没有string,但String在 Java 中。
  • this.word等于word然后检查它们是否相等......
  • 您无需执行 if/else 即可返回布尔值:只需执行return x.equals(y);(不一定是错误的,但这是个人的烦恼......)。
  • compareTo,经典的, is not equals,但根据一个对象是否低于、等于或高于另一个对象返回 -1、0 或 1。

修改你的课程... :-)

于 2011-06-21T05:30:53.660 回答
0

在您的代码中,方法 compareTo 是静态的,因此您不能使用“this”。我建议您最好不要将 compareTo 方法设为静态。

于 2011-06-21T04:46:24.930 回答