структура для хранения данных в этом случае (Hashmap / ArrayList и т. д.)? - PullRequest
0 голосов
/ 03 мая 2011

Лучший способ описать это - объяснить ситуацию.

Представьте, что у меня есть фабрика по производству стульев.Сейчас фабрика разделена на 5 секций.Стул может быть сделан полностью в одной области или в нескольких областях.Создатели стульев добавляют атрибуты стула к объекту стула.В конце дня эти объекты собираются моей воображаемой программой и добавляются в тип данных X (ArrayList и т. Д.).

Когда добавляется стул, он должен проверить, существует ли стул, и если нет, заменить существующий.стул, но добавьте к нему атрибуты стульев (не беспокойтесь об этой части, я рассмотрел этот вопрос)

Так что в основном я хочу структуру, которую я могу легко проверить, если объект существует, если не просто вставлять его прямо, иначевыполнить приложение.Поэтому мне нужно найти стул, соответствующий определенному уникальному идентификатору.Вроде как набор.За исключением того, что он не соответствует одному и тому же объекту, если стул сделан в трех областях, это будет три разных объекта - в реальной жизни они все представляют один и тот же объект - но я хочу только один объект, который будет содержать все содержимое атрибута всехстулья.

После того, как он собрал и выполнил обновление по всем областям фабрики, ему нужно перебрать каждый объект и добавить его содержимое в БД.Опять же, не беспокойтесь о добавлении в БД и т. Д., О котором идет речь.

Я просто хочу знать, какая наилучшая структура данных в Java будет соответствовать этой спецификации.

Заранее спасибо.

Ответы [ 3 ]

1 голос
/ 03 мая 2011

Я бы сказал, HashMap: он позволяет быстро проверить, существует ли объект с заданным уникальным идентификатором, и извлечь этот объект, если он существует в коллекции. Тогда вам просто нужно выполнить функцию слияния, чтобы добавить атрибуты к объекту, который уже находится в коллекции.

В отличие от большинства других коллекций (например, ArrayList), HashMaps на самом деле оптимизированы для поиска чего-либо по уникальному идентификатору, и это будет так же быстро делать это независимо от того, сколько объектов у вас в коллекции.

Этот ответ изначально ссылался на класс Hashtable, но после дальнейших исследований (и некоторых хороших комментариев) я обнаружил, что вам всегда лучше использовать HashMap. Если вам нужна синхронизация, вы можете позвонить по ней Collections.synchronizedMap(). См. здесь для получения дополнительной информации.

1 голос
/ 03 мая 2011

Я бы сказал, использовать ArrayList. Переопределите метод hashcode / equals () вашего объекта Chair, чтобы использовать уникальный идентификатор. Таким образом, вы можете просто использовать list.contains (стул), чтобы проверить, существует ли он.

0 голосов
/ 03 мая 2011

Я бы сказал, используйте EnumMap. Определите enum всех возможных категорий деталей, чтобы вы могли запросить EnumMap, для какой детали отсутствует

public enum Category {
    SEAT,REST,LEGS,CUSHION
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...