我有课
MyData
及其对象
myData
在 MyData 类中..有多个字段
喜欢
int id
String name
String desc
等等..
现在我有两个此类的对象..
是否可以检查这两个对象的数据是否相同,例如两个对象具有相同的 Id ,相同的名称,相同的描述...而不检查该对象的每个字段..(即没有检查每个对象的 id,name,desc)因为这个对象有几十个字段。
我正在使用 JAVA 和 GWT
我遇到的一些实现..不确定这是否可能。有效
private static String oldSequence = "";
boolean changed(TestSequence sequence) {
String newSequence = serializeToString(sequence);
boolean changed = !newSequence.equals(oldSequence);
oldSequence = newSequence;
return changed;
}
private static byte[] serialize(Object obj) throws IOException {
ByteArrayOutputStream b = new ByteArrayOutputStream();
ObjectOutputStream o = new ObjectOutputStream(b);
o.writeObject(obj);
return b.toByteArray();
}
private static String serializeToString(Object obj) {
try {
return new String(serialize(obj));
} catch (Exception ex) {
return "" + ex;
}
}
谢谢
最佳答案
您应该重写hashCode()
和equals()
方法。您可以从 IDE 生成它们。
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof MyData)) return false;
MyData myData = (MyData) o;
if (id != myData.id) return false;
if (!desc.equals(myData.desc)) return false;
if (!name.equals(myData.name)) return false;
return true;
}
@Override
public int hashCode() {
int result = id;
result = 31 * result + name.hashCode();
result = 31 * result + desc.hashCode();
return result;
}
现在您可以比较对象了。就是这样。
关于java - Java中如何比较两个相同对象的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20375762/