等方法:比较2个对象

时间:2012-01-19 04:20:04

标签: java methods arraylist

我目前正在研究java中的一个项目。我需要创建一个按名称比较两个项目的方法。我的第一个文件叫Item,有一个名字。第二个文件的arrayListItems。我需要创建一个相等的方法,根据它们的名称比较两个项目。我需要返回boolean,代码从此开始。

public boolean toEqual(Object o)

我对下一步该做什么很困惑。我知道你可能不得不使用if else语句以及我创建的getName()方法。但是我认为应该将对象转换为Item对象,但我不知道如何。谁能提出任何建议?感谢。

4 个答案:

答案 0 :(得分:2)

你做的正确,所以现在你只需要把它放在一起。

http://www.javabeginner.com/learn-java/java-object-typecasting该网站有一些关于Java中的投射对象的信息。基本上将一个对象与另一个对象放在一起,你可以这样做:

Item i = (Item) o;

这会将您的o投放到Item

类型

接下来,您需要查看是否i.getName().equals(getName())。您可以返回该结果,您应该完成:)

祝你好运!

答案 1 :(得分:1)

您可以像这样投射对象 -

(ClassName)obj 

然而,一个更好的方法是覆盖等于& java.lang.Object的hashcode方法并在那里处理它。要知道如何正确覆盖它,您可以参考这篇文章 - http://www.technofundo.com/tech/java/equalhash.html

HTH, - Manish

答案 2 :(得分:0)

您应该为项类实现boolean equals(Object)int hashCode(),因为这样您就可以简单地调用列表的contains(Object)方法来查找列表中是否存在匹配项。 / p>

答案 3 :(得分: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()));
}