Actualmente tengo un programa de tipo hoja de cálculo que conserva sus datos en una Lista de Arratos de HashMaps. Sin duda se sorprenderá cuando le digo que esto no ha resultado ideal. La sobrecarga parece usar 5 veces más memoria que los datos en sí.Alternativas HashMap para el almacenamiento de datos con memoria eficiente
This question pregunta acerca de las bibliotecas de colecciones eficientes, y la respuesta fue usar Google Collections. Mi seguimiento es "¿qué parte?". He estado leyendo la documentación, pero no creo que dé una buena idea de qué clases son adecuadas para esto. (También estoy abierto a otras bibliotecas o sugerencias).
Así que estoy buscando algo que me permita almacenar datos densos de tipo hoja de cálculo con una sobrecarga de memoria mínima.
- Mis columnas están actualmente referenciados por objetos Field, filas por sus índices, y los valores son objetos, casi siempre Cuerdas
- Algunas columnas tendrán una gran cantidad de valores repetidos
- operaciones primarias son actualizar o eliminar registros basados en valores de ciertos campos, y también agregar/eliminar/combinar columnas
Conozco opciones como H2 y Derby, pero en este caso no estoy buscando utilizar una base de datos incrustada.
EDIT: Si está sugiriendo bibliotecas, también agradecería que me indicara una o dos clases particulares que se aplicarían aquí. Mientras que la documentación de Sun generalmente incluye información sobre qué operaciones son O (1), que son O (N), etc., no veo mucho de eso en bibliotecas de terceros, ni realmente ninguna descripción de qué clases son las más adecuadas para qué .
Aquí hay una herramienta para ayudarlo a comparar la huella de memoria de cualquier estructura que elija: http://code.google.com/p/memory-measurer/, y vea algunos datos de ejemplo que obtuve de ella: http://code.google.com/p/memory-measurer/wiki/ElementCostInDataStructures –
Los enlaces anteriores obtuvieron brocken –