Ищете реализацию Java Map, которая поддерживает getKeysForValue - PullRequest
1 голос
/ 10 июля 2009

Я ищу реализацию java.util.Map, в которой есть метод, который будет возвращать все ключи, сопоставленные с заданным значением, то есть несколько ключей отображаются на одно и то же значение. Я посмотрел на Google Collections и Apache Commons и ничего не заметил. Конечно, я мог бы перебирать набор ключей и проверять каждое соответствующее значение или использовать две карты, но я надеялся, что что-то уже было создано.

Ответы [ 4 ]

2 голосов
/ 10 июля 2009

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

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

Это не кажется сложным для реализации, возможно, немного тяжелым с точки зрения накладных расходов памяти.

1 голос
/ 10 июля 2009

Здесь вам нужна двунаправленная карта , для которой есть реализация в коллекциях общих ресурсов .

0 голосов
/ 10 июля 2009

Я не могу найти готовый класс, который поддерживает значения с несколькими ключами. Однако вы можете повторно внедрить Apache Commons DualHashBidiMap , используя MultiHashMap вместо одного из HashMaps.

0 голосов
/ 10 июля 2009

Ваши объекты-значения могут иметь свойство (возможно, типа ArrayList), которое содержит все ключи. Затем вы расширяете HashMap (или любой другой тип Map, который вы используете) и переопределяете put таким образом, чтобы при добавлении объекта и ключа вы также добавляли ключ в список ключей вашего объекта.

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