java 哈希码和等于
java hashcode and equals
为以下 class 创建 hashCode 和 equals 方法。
private static class MyOb {
private String name;
private Integer quality;
private final int MAXIMUM = 23;
}
我无法解决这个问题
Javaclass有默认的hashCode和通过superclass实现的equals方法方法。如果你想超越他们,你可以通过以下方式:
class MyOb {
private String name;
private Integer quality;
private final int MAXIMUM = 23;
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((name == null) ? 0 : name.hashCode());
result = prime * result + ((quality == null) ? 0 : quality.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
MyOb other = (MyOb) obj;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
if (quality == null) {
if (other.quality != null)
return false;
} else if (!quality.equals(other.quality))
return false;
return true;
}
}
注意:class不能是私有的或静态的
如果您想查看 class 的哈希码。
创建对象
Myob myObject=new Myob();
System.out.println(myObject);
如果要等于方法
myObject.equals(which one you want to campare);
为以下 class 创建 hashCode 和 equals 方法。
private static class MyOb {
private String name;
private Integer quality;
private final int MAXIMUM = 23;
}
我无法解决这个问题
Javaclass有默认的hashCode和通过superclass实现的equals方法方法。如果你想超越他们,你可以通过以下方式:
class MyOb {
private String name;
private Integer quality;
private final int MAXIMUM = 23;
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((name == null) ? 0 : name.hashCode());
result = prime * result + ((quality == null) ? 0 : quality.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
MyOb other = (MyOb) obj;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
if (quality == null) {
if (other.quality != null)
return false;
} else if (!quality.equals(other.quality))
return false;
return true;
}
}
注意:class不能是私有的或静态的
如果您想查看 class 的哈希码。 创建对象
Myob myObject=new Myob();
System.out.println(myObject);
如果要等于方法
myObject.equals(which one you want to campare);