Tengo una tarea, donde tengo que pasar por varios miles de líneas de cadenas y verificar si cada una de ellas es única. Todas las líneas en sí no pueden ser acomodadas dentro de la memoria RAM de la PC. Además, es probable que la cantidad de líneas sea mayor que Integer.MAX_VALUE.Manejo de listas de cadenas grandes en java
Supongo que la mejor manera de manejar esta cantidad de datos es poner los códigos hash de cada una de las cadenas en algún tipo de HashTable.
lo tanto, aquí están mis preguntas:
- ¿Qué debo usar en lugar de
String.hashCode()
? (el valor de retorno es int, pero probablemente necesite mucho tiempo) - ¿Cuál es la forma/marco más rápido para trabajar con listas de este tamaño? Lo que más necesito es la capacidad de verificar rápidamente si la lista contiene un elemento o no
¿Por qué no aprovechar la potencia de una base de datos? ¿Tiene que hacerse estrictamente en Java? –
Si es una opción, la idea de "base de datos" es excelente. Además, deberá considerar los dos "peores casos": a) donde cada cadena es única, yb) donde cada cadena es idéntica. Cualquiera que sea la solución que se te ocurra, ¿tienes la capacidad de disco/RAM y el tiempo/potencia de cálculo para manejar ambos casos? – paulsm4
¿Cuán grande puede ser el número de líneas? Sé más grande que MAX_VALUE - más grande que 32 * MAX_VALUE? Más grande que...? –