Я ищу наиболее базовое решение для создания нескольких индексов в коллекции Java.
Необходимая функциональность:
- При удалении значения все записи индекса, связанные с этим значением, должны быть удалены.
- Индексный поиск должен быть быстрее, чем линейный поиск (по крайней мере, так же быстро, как TreeMap).
Боковые условия:
- Никаких зависимостей от больших (например, Lucene) библиотек. Нет необычных или не очень хорошо протестированных библиотек. Нет базы данных.
- Библиотека, подобная коллекциям Apache Commons и т.д., будет в порядке.
- Еще лучше, если он работает только с JavaSE (6.0).
- Изменить: Нет самореализованного решения (спасибо за ответы, предлагающие это - хорошо, чтобы они были здесь для полноты, но у меня уже есть решение, очень похожее на Jay's) Всякий раз, когда несколько человек узнают, что они реализовали одно и то же, это должно быть частью некоторой общей библиотеки.
Конечно, я мог бы написать класс, который управляет несколькими Картами (это не сложно, но похоже, что вы изобретаете колесо). Поэтому я хотел бы знать, если это можно сделать без - при этом все еще простое использование, похожее на использование одной индексированной java.util.Map.
Спасибо, Крис
Update
Это выглядит так, как будто мы ничего не нашли. Мне нравятся все ваши ответы - саморазвивающиеся версии, ссылки на базы данных, подобные библиотекам.
Вот то, что я действительно хочу: Чтобы иметь функциональность в (а) коллекциях Apache Commons или (b) в Google Collections/Guava. Или, может быть, очень хорошая альтернатива.
Другие пропустили эту функцию в этих библиотеках? Они предоставляют всевозможные вещи, такие как MultiMaps, MulitKeyMaps, BidiMaps,... Я чувствую, что он будет хорошо вписываться в эти библиотеки - его можно было бы назвать MultiIndexMap
. Как вы думаете?