2011-06-21 73 views
1

我有一個關於在Java中使用compareTo函數的問題。在一個參數中創建java中的compareTo方法

在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函數來保存與第二個單詞相比較的第一個單詞?

感謝

+1

也許你應該告訴我們你爲什麼要這麼做?爲什麼你想重新創建一些作品很好 –

+0

你想實現「Comparable」接口? – Asaph

+0

你的意思是'String',而不是'string'(注意大寫'S')? – Asaph

回答

0

在你的代碼中,方法的compareTo是靜態的,所以你不能用「這一點。」 我建議你最好不要讓compareTo方法靜態化。

+0

所以......它是否工作,如果刪除「靜態」並聲明「私人字符串字」,外面的方法? – NBB

+0

也許我沒有解釋清楚。如果您需要靜態的compareTo方法,則必須聲明字符串字段「word」(不是參數)static。 – YODA

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); 
1

這不是在很多方面是個好主意......

  • 你不能在靜態使用this功能。
  • 您不能將可見性聲明添加到函數的局部變量。
  • Java中沒有string而是String
  • 你讓this.word等於word然後檢查它們是否相等...
  • 你並不需要做的if/else返回一個布爾值:只是做return x.equals(y);(不一定是錯的,但是這是一個個人的忌諱...)。
  • compareTo,經典之一,不是equals,但返回-1,0或1取決於如果一個對象較低,等於或高於另一個。

修改您的教訓... :-)