ShuffleEntry { @Override public int hashCode() { return getClass().hashCode() + (position == null ? 0 : position.hashCode()) + (key == null ? 0 : Arrays.hashCode(key)) + (secondaryKey == null ? 0 : Arrays.hashCode(secondaryKey)) + (value == null ? 0 : Arrays.hashCode(value)); } ShuffleEntry(byte[] key, byte[] secondaryKey, byte[] value);  ShuffleEntry(ShufflePosition position, byte[] key, byte[] secondaryKey, byte[] value); ShufflePosition getPosition(); byte[] getKey(); byte[] getSecondaryKey(); byte[] getValue(); int length(); @Override String toString(); static String byteArrayToString(byte[] bytes); @Override boolean equals(@Nullable Object o); @Override int hashCode();  }
@Test public void equalsForEqualEntries() { ShuffleEntry entry0 = new ShuffleEntry(KEY, SKEY, VALUE); ShuffleEntry entry1 = new ShuffleEntry(KEY.clone(), SKEY.clone(), VALUE.clone()); assertEquals(entry0, entry1); assertEquals(entry1, entry0); assertEquals(entry0.hashCode(), entry1.hashCode()); }
@Test public void equalsForEqualNullEntries() { ShuffleEntry entry0 = new ShuffleEntry(null, null, null); ShuffleEntry entry1 = new ShuffleEntry(null, null, null); assertEquals(entry0, entry1); assertEquals(entry1, entry0); assertEquals(entry0.hashCode(), entry1.hashCode()); }