Вы не должны нигде использовать необработанный хэш-карту, потому что такие вещи случаются.
Привыкайте собирать коллекции в классы бизнес-логики.
Видите ли, в вашем случае прямо сейчас вам нужно связать эти две связанные переменные - вашу хэш-карту и элемент "Последний ввод", чтобы вы могли удалить его.
Если вам нужно удалить последний элемент из какого-либо другого класса, вам нужно пропустить оба элемента.
Каждый раз, когда вы передаете 2 или более элементов в несколько API, вы, вероятно, пропускаете класс.
Создайте новый класс, который содержит hashmap и переменную «lastAdded». Методы put и remove, которые просто перенаправляются в хэш-карту, но метод put также устанавливает переменную lastAdded.
Также обязательно добавьте метод removeLast ().
НИКОГДА не разрешайте доступ к вашей хэш-карте за пределами этого класса, она должна быть полностью закрытой (это я и имею в виду под оболочкой). Таким образом вы можете быть уверены, что он не синхронизируется с переменной lastAdded (также полностью закрытой).
Просто повторять методы получения и установки для этих переменных было бы ужасной идеей (так как они имеют почти весь фактический OO-код).
Вы быстро найдете множество других методов, которые ДОЛЖНЫ быть в этом классе, чтобы получить доступ к данным внутри вашей хэш-карты - методы, которые никогда не чувствовали себя в своем текущем местоположении. Вы, вероятно, также заметите, что эти методы всегда имеют дополнительный параметр или два переданных - эти параметры, вероятно, должны быть членами вашего нового класса.
Как только вы привыкнете к реальному проектированию ОО (в данном случае через рефакторинг), вы обнаружите, что ваш код НАМНОГО более управляем. Чтобы проиллюстрировать этот момент, если позже вы обнаружите, что вам нужно несколько уровней «удалить последний», добавьте в свой класс ТРИВАЛЬНО, потому что будет предельно ясно, какие именно методы могут изменить вашу хеш-таблицу и где ваш новый «стек» lastItems должен быть расположен - на самом деле это, вероятно, изменение в 2 строки кода.
Если вы не создадите этот класс-обертку, в каждом месте будет код для установки «lastAdded» при добавлении кода в хеш-таблицу. Каждое из этих мест должно быть изменено, некоторые могут быть в других классах, требующих, чтобы вы передали свой новый стек с хеш-таблицей. Будет проще отключить их, если вы забудете сменить одно местоположение.