检查两个java对象的Deep Equal的最快捷有效的方法是什么?

dev*_*v ツ 5 java deepequals

我有两个java对象,其byte[]字段大小为数百万.检查这些java对象的Deep Equal的最快捷有效的方法是什么?

样本实体:

@Entity
public class NormalBook
{

  @Id
  private String bookId;

  @Column
  private String title;

  @Column
  private byte[] pdfFile;

  //setters and getters

  }
Run Code Online (Sandbox Code Playgroud)

注意:我正在为ORM工具执行此操作,基本上我正在使用Persistence Context中存在的对象检查对象(处于托管状态).

The*_*ind 2

重写equals()或使用 *helper 方法(不好的选择!)并分 5 个步骤完成:

1. Check for *not null*.
2. Check for same *type*.
3. Check for *size of byte[]*.
4. Check for `==` (*reference equality* of byte[]) 
5. Start comparing byte values 
Run Code Online (Sandbox Code Playgroud)

  • @dev 当然,时间与对象大小成正比。除了实际比较之外,您还需要比较什么其他选择? (2认同)