Attualmente ho un programma di tipo di foglio di calcolo che conserva i suoi dati in un ArrayList di HashMaps. Senza dubbio sarai scioccato quando ti dico che questo non si è dimostrato ideale. L'overhead sembra utilizzare 5 volte più memoria dei dati stessi.Alternative di HashMap per la memorizzazione dei dati a efficienza di memoria
This question chiede informazioni sulle raccolte di raccolte efficienti e la risposta era utilizzare Google Collections. Il mio follow-up è "quale parte?". Ho letto la documentazione, ma non mi sembra che dia un buon senso di quali classi sono adatte a questo. (Sono aperto anche ad altre librerie o suggerimenti).
Quindi sto cercando qualcosa che mi consenta di archiviare dati di tipo spreadsheet densi con un sovraccarico di memoria minimo.
- mie colonne sono attualmente riferimento da oggetti Field, righe dai loro indici e valori sono oggetti, quasi sempre stringhe
- Alcune colonne avranno un sacco di valori ripetuti
- operazioni principali sono per aggiornare o rimuovere record basati su valori di determinati campi e aggiunta/rimozione/combinazione di colonne
Sono a conoscenza di opzioni come H2 e Derby ma in questo caso non sto cercando di utilizzare un database incorporato.
EDIT: Se stai suggerendo le librerie, apprezzerei anche se potresti indicarmi una particolare classe o due in esse che si applicherebbero qui. Considerando che la documentazione di Sun di solito include informazioni su quali operazioni sono O (1), che sono O (N), ecc., Non sto vedendo molto di ciò nelle librerie di terze parti, e in realtà nessuna descrizione di quali classi sono più adatte a cosa .
Ecco uno strumento che consente di confrontare l'impronta di memoria di qualsiasi struttura scelta: http://code.google.com/p/memory-measurer/ e vedere alcuni dati di esempio che ho ricavato da questo: http://code.google.com/p/memory-measurer/wiki/ElementCostInDataStructures –
Sopra i collegamenti ha ottenuto il –