Допустим, у нас есть группа объектов Car.
У каждой машины есть некоторые отличительные свойства, например производитель, модель, год и т. Д. (Их можно использовать для создания различных хэш-кодов) . Дело в том, что эти списки могут пересекаться - Автомобиль может появляться более чем в одном списке.
Мы хотим объединить списки в единую коллекцию Автомобилей, где каждый Автомобиль содержит все встреченные для него Предложения Покупки.
Моя проблема заключается в выборе что собирать, чтобы использовать в этом процессе агрегации:
Кажется естественным использовать java.util.HashSet для хранения наших автомобилей, таким образом, просматривая различные списки автомобилей, мы можем проверить, есть ли автомобиль уже существует в Наборе в амортизированной O (1), однако - вы не можете получить элемент из набора (в нашем случае - когда мы сталкиваемся с автомобилем, который уже существует в наборе, мы хотели бы получить этот автомобиль из набора на основе его идентификационного хэш-кода и добавить к нему PurchaseOffers) .
Я могу использовать HashMap, где хэш-код каждого автомобиля сопоставляется с фактическим объектом Car, но, вероятно, это не школьное решение, так как оно небезопасно - я должен был бы сам убедиться, что каждый хэш-код сопоставляется с Car с этим hashCode - может быть несоответствие. Конечно, можно создать определенную структуру данных, которая гарантирует такую согласованность - разве она не должна существовать?
Может ли кто-нибудь предложить структуру данных, которую я ищу, или указать на ошибку дизайна? Спасибо.