2012-01-19 185 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())); 
}