如何比较Java中两个相同对象的数据

jun*_*idp 0 java gwt

我上课了

            MyData 
Run Code Online (Sandbox Code Playgroud)

及其对象

             myData 
Run Code Online (Sandbox Code Playgroud)

在该类MyData中,有多个字段

喜欢

           int id   

           String  name 

           String desc 
Run Code Online (Sandbox Code Playgroud)

等..

现在我有这个类的两个对象..

是否有可能检查这两个对象的数据是否完全相同,就像两个对象具有相同的Id,相同的名称,相同的描述...没有检查该对象的每个字段..(即没有检查id,name,desc of Each object我自己)因为这个对象有很多字段.

我正在使用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;
        }
    }
Run Code Online (Sandbox Code Playgroud)

谢谢

Ruc*_*era 6

你应该覆盖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;
}
Run Code Online (Sandbox Code Playgroud)

现在您可以比较对象.而已.