2012-01-19 189 views
2

我目前正在開發一個java項目。我需要創建一個按名稱比較兩個項目的方法。我的第一個文件叫做Item,它有一個名字。第二個文件的arrayListItems。我需要創建一個平等的方法,根據他們的名字比較兩個項目。我需要返回一個boolean,代碼以此開始。等效方法:比較2個對象

public boolean toEqual(Object o) 

我對接下來要做什麼感到困惑。我知道你可能不得不使用if else語句以及我創建的getName()方法。不過,我認爲我應該把這個對象當作一個Item對象,但我不知道如何。任何人都可以提出建議謝謝。

回答

2

你在做什麼正確的,所以現在你只需把它放在一起。

http://www.javabeginner.com/learn-java/java-object-typecasting該網站有關於Java中的鑄造對象的一些信息。基本上情況下,一個對象到另一個對象,你做這樣的事情:

Item i = (Item) o; 

這會投你的o鍵入Item

接下來需要看是否i.getName().equals(getName())。你可以返回結果,你應該完成:)

祝你好運!

+2

是不是這樣'i.getName()== getName()'會做參考比較,而不是內容比較?假設name是一個String類型或一個非primititve類型,你不應該使用'i.getName()。equals(getName())'嗎? – blahman

+1

@blahman你說得對。更新。我忘記了這句話是Java而不是C# –

0

您應該爲項目類實現boolean equals(Object)int hashCode(),因爲那樣您可以簡單地調用列表的contains(Object)方法來查找列表中是否存在匹配的項目。

0

比方說,你有一個名爲Item 和你Item類有一個實例字段名爲name,你用它來存儲項目的名稱類。

class Item { 
    private String name = "item name"; 

    public String getName() { 
     return name 
    } 

    public boolean toEqual(Object o) { 
     // Firstly cast it to Item 
     Item item = (Item) o; 
     // Then perform the compare 
     return (name.equals(item.getName())); 
    } 
} 

其實你可以toEqual方法的簽名更改爲 public boolean toEqual(Item o)。在這種情況下,你不需要投射操作。

public boolean toEqual(Item o) { 
    // Perform the compare 
    return (name.equals(o.getName())); 
}