我有一个类,我想比较该类的两个对象。有什么办法吗? 比较两个用户定义的对象。我不想手动做。
public class NewClass {
private String name;
private String surnamename;
private String address;
public NewClass(String name)
{
this.name = name;
}
public NewClass(String name, String surname, String address)
{
this.name = name;
this.surnamename = surname;
this.address = address;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSurnamename() {
return surnamename;
}
public void setSurnamename(String surnamename) {
this.surnamename = surnamename;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
我想比较这个类的两个对象。我怎么能做到这一点?
NewClass newClass1 = new NewClass("kshitij", "solanki", "nadiad");
NewClass newClass2 = new NewClass("kshitij", "solanki", "nadiad");
String s1 = new String("kshitij");
String s2 = new String("kshitij");
NewClass s3 = new NewClass("kshitij");
NewClass s4 = new NewClass("kshitij");
System.out.println(s1.hashCode());
System.out.println(s2.hashCode());
System.out.println(s3.hashCode());
System.out.println(s4.hashCode());
System.out.println(newClass1 == newClass2);
System.out.println(newClass1.toString() == newClass2.toString());
System.out.println(newClass1.toString().equals(newClass2.toString()));
答案 0 :(得分:2)
您希望实施equals
和hashCode
,例如
public boolean equals(final Object other) {
if (other instanceof NewClass) {
final NewClass _other = (NewClass) other;
return name.equals(_other.name)
&& (surname == null && surname == _other.surname
|| surname.equals(_other.surname))
&& (address == null && address == _other.address
|| address.equals(_other.address));
} else {
return false;
}
}
public int hashCode() {
return name.hashCode() * 961
+ (surname == null ? 0 : surname.hashCode()) * 31
+ (address == null ? 0 : address.hashCode());
}
现在,您可以通过语义比较NewClass
个实例,例如
/* they are equal */
assert new NewClass("A", "B", "C").equals(new NewClass("A", "B", "C"));
答案 1 :(得分:1)
这是equals()
和hashcode()
方法的用途。
覆盖equals()
hashcode()
和NewClass
方法
在equals()
方法内部编码您的相等条件并使用相同的变量进行hashcode()计算。
答案 2 :(得分:1)
您可以使用equals()
方法。
该方法可在java.lang.Object
此方法主要用于比较两个对象。
此方法可以为特殊目的而重写。
并且该方法基本上返回boolean
值。