Penso che la risposta è no, non c'è nessun equivalente evidente.
La classe boost di multiindice è fortemente basata su modelli, che non è facilmente traducibile in Java. Ci sono dei farmaci generici, ma non sono affatto uguali. (How are Java generics different from C++ templates? Why can't I use int as a parameter?).
Quindi, senza modelli, come sarebbe la classe a più indici?
Immagino che avresti la tua classe di dati, ad es. Persona, contenente membri di indici come un'implementazione di mappa. A questo punto, avete scelte:
- aggiungere alcuni "indici" direttamente al classe Person (come alcuni Hashtables) e scrittura di ricerca funzioni. Gestire la sincronizzazione dell'indice all'interno della classe Persona .
- Scrivi un "IndexProvider" classe che disaccoppia la funzionalità dell'indice interamente da persona - avrebbe dovuto essere in grado di creare dinamicamente diversi indici tipi e mi immagino si farebbe sincronizzazione maniglia via callback.
- Alcuni mix di 1) e 2) - come una classe di base astratta per l'indice funzionalità, che non disaccoppiare correttamente il comportamento ma fornisce alcune riutilizzo del codice.
Penso che nella maggior parte dei casi 1) sia il più facile da scrivere, più facile da mantenere ed è probabilmente il più performante. 2) sembra un eccesso di ingegneria.
L'altra opzione, se si dispone di molte strutture di dati che richiedono l'indicizzazione, è quella di memorizzarle in un database.
fonte
2010-09-04 16:04:11
può essere eccessivo (da cui commento), avete considerato un DB embedded per questo? Ci sono molti DB leggeri che puoi incorporare ed eseguire in memoria, suppongo che dipenda dai tuoi requisiti di performance .... – Nim