Ответ 1
Я только что закончил MultiIndexContainer в Java: http://code.google.com/p/multiindexcontainer/wiki/MainPage. Я знаю, что это не полный эквивалент boost multi_index_container, но, возможно, этого может быть достаточно для вашего требования.
Я наткнулся на multi_index на жаворонку прошлой ночью, в то время как стучал по моей коллекции против коллекции, которую мне нужно получить с помощью трех разных значений ключа, а также для перебалансировки семантики массива. Ну, я получил одно из двух моих пожеланий (3 разных значения ключа) в boost:: multi_index.
Мне любопытно, если что-то подобное существует в мире Java.
Я только что закончил MultiIndexContainer в Java: http://code.google.com/p/multiindexcontainer/wiki/MainPage. Я знаю, что это не полный эквивалент boost multi_index_container, но, возможно, этого может быть достаточно для вашего требования.
Возобновление старого вопроса, но посмотрите на CQEngine в качестве решения.
Для фона также см. соответствующий вопрос Как вы запрашиваете коллекции объектов в Java (критерии/SQL-подобные)?
Я думаю, что короткий ответ - нет, нет очевидного эквивалента.
Класс multi-index boost очень сильно затенен, что нелегко переводит на Java. Есть дженерики, но они совсем не то же самое. (Как отличные от Java-шаблоны шаблоны С++? Почему я не могу использовать int как параметр?).
Итак, без шаблонов, как выглядит класс с несколькими индексами?
Я предполагаю, что у вас будет свой класс данных, например. Человек, содержащий членов индекса, например, реализацию карты. На этом этапе у вас есть выбор:
Я думаю, что в большинстве случаев 1) легче всего писать, проще всего поддерживать и, вероятно, наиболее результативно. 2) кажется чрезмерной инженерией.
Другой вариант, если у вас много структур данных, требующих индексации, заключается в их сохранении в базе данных.
Я думаю, что вы можете найти ответ в библиотеке google goava. Вероятно, multimaps решить ваши потребности.
https://code.google.com/p/guava-libraries/wiki/CollectionUtilitiesExplained
Как прокомментировано в этих потоках:
Я понятия не имею, что означает boost:: multi_index, но исходя из остальной части вашего вопроса, я думаю, вы могли бы говорить о карте с несколькими ключами