По определению, присваивая каждому объекту универсальный уникальный идентификатор (UUID) (или глобальный уникальный идентификатор (GUID)) в качестве его свойства идентификатора, UUID сопоставим и согласуется с равными.В Java уже есть класс UUID , и после его создания вы можете просто использовать строковое представление для сохранения.Выделенное свойство также гарантирует, что идентичность стабильна во всех версиях / потоках / машинах.Вы также можете просто использовать инкрементный идентификатор, если у вас есть метод обеспечения того, что все получает уникальный идентификатор, но использование стандартной реализации UUID защитит вас от проблем, связанных с объединением множеств и параллельными системами, генерирующими данные одновременно.
Если вы используете что-либо еще для сопоставимого, это означает, что оно сопоставимо способом, отличным от его идентичности / стоимости.Таким образом, вам необходимо определить, что сопоставимые средства для этого объекта, и задокументировать это.Например, люди сравнимы по имени, DOB, росту или комбинации по порядку старшинства;наиболее естественно по имени как соглашение (для более легкого поиска людьми), которое отделено от, если два человека - то же самое лицо.Вам также придется признать, что сравнение и равные не связаны, потому что они основаны на разных вещах.