Когда мне понадобилось реализовать ярлыки для Java «как в веб-два-ноль», гугление не помогло найти ни одной библиотеки, содержащей в себе подобный тип коллекции.
Решил сделать сам.
Итак, нам надо хранить объекты в коллекции данного типа (назовем его, скажем, LabelsMultiMap). Как объекты, так и ярлыки могут быть произвольного типа. Количество ярлыков сверху не ограничено, равно как и количество объектов. Одним и тем же набором ярлыков могут быть описаны более 1 объекта. У одного объекта один ярлык может встретиться только 1 раз.
Пример валидных ярлыков:
Коллекция должна позволять:
Решил сделать сам.
Итак, нам надо хранить объекты в коллекции данного типа (назовем его, скажем, LabelsMultiMap). Как объекты, так и ярлыки могут быть произвольного типа. Количество ярлыков сверху не ограничено, равно как и количество объектов. Одним и тем же набором ярлыков могут быть описаны более 1 объекта. У одного объекта один ярлык может встретиться только 1 раз.
Пример валидных ярлыков:
Ярлыки | Объекты |
---|---|
green, wooden, alive | tree |
green, wooden, lifeless | bench |
green, alive, croak | frog |
Коллекция должна позволять:
- put() — помещать в неё объекты со списком прикрепленных меток
- getValues() — возвращать объекты, содержащиеся в коллекции
- findValues() — осуществлять поиск объектов, ярлыки которых содержат запрашиваемый набор ярлыков
- findValuesOnlyIn() — осуществлять поиск только тех объектов, все ярлыки которых входят в запрашиваемый набор ярлыков