我有两个同一个类的对象。该类包含许多其他具有不同类型的对象,如List<>,...
确定这两个值是否具有相同值的最佳方法是什么?我尝试使用哈希码功能,但它似乎对我不起作用。
public class MyClass{
List<OtherClass> myList;
String foo;
SubClass mySubClass;
public MyClass(values...){ ... }
...
}
MyClass obj1 = new MyClass(values...);
MyClass obj2 = new MyClass(values...); // same values with obj1
if(obj1.hashcode() == obj2.hashcode()){
System.out.println("This is what I want");
}else{
System.out.println("This is what happens");
}
答案 0 :(得分:0)
您需要覆盖MyClass的equals()和hashcode()方法。
你的想法可能会为你做。
你想要的是一个深刻的比较。 equals方法应该进入每个列表并迭代,并进行比较。
hashcode应该使用每个元素的哈希码来生成哈希码。
答案 1 :(得分:0)
请覆盖equals方法以检查是否相等。不要使用哈希码进行相等性检查。
请检查equals / hashcode上的java文档,因为这篇帖子可能过于冗长。在equals / hashcode和它的用途之间。
为了比较两个列表,你可以简单地使用list.equals方法...不需要迭代Ex的列表(请参阅java.util.List文档中的equals);
// Sample Code...
public class MyClass {
List<OtherClass> myList;
public boolean equals(Object o) {
if (o instanceof List) {
myList.equals((List) o) ;
}
return false;
}
}
希望这会有所帮助......