我目前正在研究java中的一个项目。我需要创建一个按名称比较两个项目的方法。我的第一个文件叫Item
,有一个名字。第二个文件的arrayList
为Items
。我需要创建一个相等的方法,根据它们的名称比较两个项目。我需要返回boolean
,代码从此开始。
public boolean toEqual(Object o)
我对下一步该做什么很困惑。我知道你可能不得不使用if else语句以及我创建的getName()
方法。但是我认为应该将对象转换为Item对象,但我不知道如何。谁能提出任何建议?感谢。
答案 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()));
}