Можно ли хранить различные экземпляры одного и того же класса в Java с помощью Hashmap? - PullRequest
0 голосов
/ 02 апреля 2020

У меня есть программа регистрации, где пользователи могут бронировать столики в ресторане.

Поскольку мне нужно хранить потенциально бесконечное количество клиентов, я не могу явно создавать новые экземпляры своего класса Customer, потому что мне нужно быть возможность добавлять их во время выполнения.

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

Для ясности, ключ меняется, он успешно добавляет новый ключ, но значения внутри предыдущего ключа перезаписываются

Пример

Класс Customer имеет 3 установщика: set Id, set fname, set lname.

Они просто берут ввод из регистрационной формы и присваивают его каждой переменной экземпляра.

Я создаю свой единственный экземпляр класса с Customer cust = new Customer (). И HashMap hm = new HashMap ()

Пользователь заполняет форму, выбирает отправить. Эта кнопка отправки вызывает все установщики, чтобы назначить информацию.

Затем я использую hm.put (cust.getId (), cust).

И я могу правильно получить значения с помощью Customer retrieveCust = (Customer) map.get (ID) Строка fname = retrieveCust.getName ()

Однако это только последний набор значений. Так что, если у меня есть Джон Доу и Джейн Доу, только Джейн извлекается для каждого ключа.

Есть ли способ заставить его хранить каждый отдельный «экземпляр» cust со значениями, представленными в форме?

1 Ответ

0 голосов
/ 02 апреля 2020

Я предполагаю, что у вас есть что-то вроде Map<String, Customer>. Ключ может иметь только одно значение. Таким образом, карта всегда будет иметь последнее значение, которое вы присвоили клавише.

Если вы хотите иметь разные значения для ключа, вам следует рассмотреть что-то вроде Map<String, List<Customer>> или Map<String, Set<Customer>>.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...