我们如何决定hashCode()集合方法的最佳实现(假设equals方法已被正确覆盖)?
我想在Java中比较两个字符串的相等性,当其中一个或两个都可以时null,所以我不能简单地调用.equals().什么是最好的方法?
boolean compare(String str1, String str2) {
...
}
Run Code Online (Sandbox Code Playgroud)
编辑:
return ((str1 == str2) || (str1 != null && str1.equals(str2)));
Run Code Online (Sandbox Code Playgroud) 我用一个String字段构建了一个类.然后我创建了两个对象,我必须使用==运算符进行比较.equals().这就是我所做的:
public class MyClass {
String a;
public MyClass(String ab) {
a = ab;
}
public boolean equals(Object object2) {
if(a == object2) {
return true;
}
else return false;
}
public boolean equals2(Object object2) {
if(a.equals(object2)) {
return true;
}
else return false;
}
public static void main(String[] args) {
MyClass object1 = new MyClass("test");
MyClass object2 = new MyClass("test");
object1.equals(object2);
System.out.println(object1.equals(object2));
object1.equals2(object2);
System.out.println(object1.equals2(object2));
}
}
Run Code Online (Sandbox Code Playgroud)
编译后,结果显示两次false.如果两个对象具有相同的字段 - "test",为什么它是错误的?
我有两个从同一个类实例化的java对象.
MyClass myClass1 = new MyClass();
MyClass myClass2 = new MyClass();
Run Code Online (Sandbox Code Playgroud)
如果我将它们的两个属性设置为完全相同的值,然后验证它们是否相同
if(myClass1 == myClass2){
// objects match
...
}
if(myClass1.equals(myClass2)){
// objects match
...
}
Run Code Online (Sandbox Code Playgroud)
但是,这些方法都没有返回真正的价值.我检查了每个属性并匹配.
如何比较这两个对象以验证它们是否相同?