2016-06-15 21 views
5

Desidero memorizzare enormi quantità di stringhe in un Map<String, MagicObject>, in modo che sia possibile accedere rapidamente allo MagicObjects. Ci sono così tante voci su questa mappa che la memoria sta diventando un collo di bottiglia. Supponendo che il MagicObjects non possa essere ottimizzato, qual è il tipo di mappa più efficiente che potrei usare per questa situazione? Attualmente sto usando il seguente:Qual è il metodo più efficiente per la memorizzazione di un numero elevato di stringhe in una mappa?

gnu.trove.map.hash.TCustomHashMap<byte[], MagicObject> 
+0

Sarei stupito se un'altra mappa improvvisamente utilizzasse molto meno memoria, ma non sono così familiare con l'ottimizzazione delle app per l'utilizzo della memoria. –

+2

Non si modifica il modello di memoria JVM passando alle strutture dati. – duffymo

+0

Perché non una THashMap? –

risposta

2

Se le chiavi hanno un sacco di prefissi comuni allora si può risparmiare memoria utilizzando una struttura dati trie (albero prefisso). Le risposte a this question indicano un paio di implementazioni Java di trie.

1

Per aprire la mente, prendere in considerazione Huffman coding per comprimere le stringhe prima dello inserito nella mappa, purché le stringhe siano corrette (il numero e il contenuto della stringa non cambiano).

Problemi correlati