sto lavorando con un ampio set (5-20 milioni di euro) di chiavi String (durata media 10 caratteri) che ho bisogno di memorizzare in un a struttura di dati di memoria che supporta la seguente operazione in tempo costante o quasi in tempo costante:bisogno di memoria modo efficiente per archiviare tonnellate di stringhe (era: implementazione HAT-Trie in java)
// Returns true if the input is present in the container, false otherwise
public boolean contains(String input)
hashmap di Java sta dimostrando di essere più che soddisfacente per quanto riguarda il throughput è interessato, ma sta prendendo un sacco di memoria. Sto cercando una soluzione che sia efficiente in termini di memoria e supporti ancora un throughput che sia accettabile (paragonabile o quasi all'altezza dell'hashing).
Non mi importa dei tempi di inserimento/cancellazione. Nella mia applicazione, eseguirò solo gli inserimenti (solo al momento dell'avvio) e successivamente eseguirò una query sulla struttura dei dati solo utilizzando il metodo contains
per la durata dell'applicazione.
Ho letto che la struttura dati HAT-Trie è la più vicina alle mie esigenze. Mi chiedo se esiste una libreria che ha un'implementazione.
Altri suggerimenti con indicazioni per implementazioni benvenute.
Grazie.
Suppongo che ogni altra infrastruttura utilizzerà molta memoria, se implementata in Java. – ebo
@ebo Non se l'implementazione sottostante utilizza gli array chars/char. Non è necessario mantenere l'oggetto String di input. In generale, è necessario utilizzare una memoria inferiore. – hashable
Domanda molto interessante. –