Tenemos un requisito de leer/escribir más de 10 millones de cadenas en un archivo. Además, no queremos duplicados en el archivo. Como las cuerdas se enjuagarán en un archivo tan pronto como se lean, no lo mantendremos en la memoria.construye un número único para una cadena en Java
No podemos usar hashcode debido a las colisiones en el código hash debido a que podríamos perder una cadena como duplicada. Otros dos enfoques que encontré en mi Google:
1.Utilice un algoritmo de resumen de mensaje como MD5, pero podría ser demasiado costoso de calcular y almacenar.
2.Utilice un algoritmo de suma de comprobación. [No estoy seguro si esto produce una clave única para una cadena- ¿alguien puede confirmar?]
¿Hay algún otro enfoque disponible? Gracias.
¿Se puede ordenar y deduplicar el archivo después de la creación? –
MD5 es en realidad un algoritmo de suma de comprobación. Sin embargo, dos cadenas diferentes pueden tener la misma suma de comprobación. – Tedil
no va a obtener colisiones con un código hash REAL como SHA1 o las variantes SHA. MD5 __IS__ a código hash. Los códigos de suma de comprobación son para asegurarse de que los datos no estén corruptos, no le ayudarán con la exclusividad. –