K>Может я не совсем задачу понял задачу... K>Атрибуты по которым делается запрос известны заранее. Из комбинации атрибутов создаем ключ.Все это засовывается в стандартный контейнер (unordered_map в с++, HashMap в java). K>Ключ и такую коллекцию создаете для каждой комбинации атрибутов по которой может делаться запрос. K>Или у вас комбинации атрибутов по котором будут делаться запросы неизвестна заранее и пользователь каждый раз задает набор из множества атрибутов для нового запроса?
коллекция к которой делается запрос — неизменяема.
а запросы могут быть разные.
так-что если делать "ключ" из комбинаций атрибутов, то это могут быть десятки миллионов ключей.
если например, в коллекции 1000 элементов. по 10 атрибутов, которые имеют по 30 значений, то это
300000 тысяч ключей.
если пришел запрос, в котором для каждого атрибута задано по 10 допустимых значений, то это
100 запросов к хештаблице, с последующей вставкой в упорядоченый список.
сомнительная оптмизация.
лучше уж как выше написали отбросить фильтром Блума невалидные запросы, а дальше по старинке.