2014-03-31 33 views
0

我正在進行大學任務,我必須將元素存儲在「Comparable」類型的數組中。例如:與java中的「Comparable」類型變量比較?

protected Comparable storage[]; 

將存儲在該數組中都將是要麼全部整數,或者所有的字符串,但他們顯然創造了與「可比」類型,而不是被創建爲INT元素,或字符串。

我遇到的問題是比較這些值。在任何給定的點上,比如數組中填充了「Comparable」元素,這些元素實際上是整數,我怎麼能比較它們?我得知我必須使用compareTo()方法,但實現是什麼樣子?我已經在網上查看了Java文檔,它讓我更加困惑。

總而言之,在任何給定的點上,數組可能都具有「Comparable」類型的元素,它們實際上都是整數,或者所有元素都是使用「Comparable」類型創建的Strings。數組中沒有整數和字符串的混合和匹配,它只是一個或另一個。我想知道如何製作compareTo()方法,以便我可以輕鬆地比較數組中的兩個元素或任何兩個「Comparable」元素,並返回1,-1或0,如果其中一個是大於/小於其他

希望得到任何幫助。我完全失去了。

回答

0

您不需要爲Integer和String類實現compareTo方法,因爲它們已經被實現和使用。所有你需要做的就是填充可比較數組,如果你打電話排序他們,他們將被正確排序,除非數組有混合類型的元素(字符串和整數),你提到的情況並非如此。

在文檔中,你會發現,這兩個類已經實現了媲美:

http://docs.oracle.com/javase/7/docs/api/java/lang/Integer.html?is-external=true

http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true

因爲這些類根據多態性實現接口,你可以將它們所提到的數組中沒有任何問題。

字符串根據compareTo方法的String類實現進行比較,根據提及的文檔將使用字典順序或按字典順序進行比較。

http://en.wikipedia.org/wiki/Lexicographical_order

這基本上意味着字母順序如果所有字符都是小寫或所有字符是大寫,並具有較低ASCII值成爲比較小的字符。

+0

但是,如何它會比較「可比」字符串嗎?如其中,它將如何確定兩者中的哪一個更大? – Vimzy

+0

@Vimzy您已經說過整數不會與字符串進行比較。你的意思是說這個嗎? – avgvstvs

+0

是的我的意思是,因爲它不會是整數將與字符串進行比較,所以不會有問題@avgvstvs – Thresh

0

您無需執行/覆蓋compareTo方法。當您打電話給compareTo時,將在Integer/String類中調用此方法。

如果您使用您自己的自定義類類型填充陣列,則u需要覆蓋compareTo方法,而不是根據您當前的分配要求。也許你可以通過這個挑戰了解更多關於java的Comparable

+0

所以說如果我比較的兩個變量是Comparable1和Comparable2。我會簡單地把Comparable1.compareTo(Comparable2)?另外,我的程序沒有實現比較器接口。 – Vimzy

+0

是的,你只需要這樣做。 –

+0

我這樣做了,現在編譯器說我有「未檢查或不安全」的操作。它希望我用-Xlint重新編譯。 – Vimzy