¿Cuál es la mejor manera de encontrar elementos comunes de múltiples archivos de texto con Java?

Tengo un programa que crea múltiples archivos de texto de triples rdf. Necesito comparar los triples y hacerlo rápido, ¿cuál es la mejor manera de hacerlo? Pensé en poner los triples en una matriz y compararlos, pero podría haber cientos de miles de triples por archivo y eso tomaría una eternidad. Necesito que esté lo más cerca posible del tiempo real, ya que los triples se crearán constantemente entre los archivos. Cualquier ayuda sería genial. Los archivos también están en el repositorio de AllegroGraph si es más fácil compararlos de alguna manera.

Un pensamiento: si almacenaba los triples en Excel (uno triple por fila) y una hoja por repositorio,

A: ¿cómo podría encontrar los duplicados entre las hojas? B: ¿sería rápido? y C: ¿cómo podría automatizar eso desde Java?

Respuesta 1

Debe crear un índice maestro que almacene cada triple y en cuántos archivos aparece y el nombre exacto del archivo y la ubicación del triple dentro de cada archivo. Puede buscar en el índice maestro para responder las consultas en tiempo real.

A medida que actualiza, elimina o crea nuevos archivos rdf, debe actualizar el índice maestro.

Debe almacenar el índice maestro para que se pueda actualizar y buscar de manera eficiente.

Una opción simple podría ser utilizar una base de datos relacional (como MySql) para almacenar el índice maestro. Puede responder sus preguntas como encontrar triples comunes con una simple declaración de selecciónselect * from rdfindex where triplecount > 2.

EDITAR: No puede almacenar cientos de miles de triples en la memoria utilizando HashMap o una estructura de datos similar. Es por eso que sugerí usar una base de datos, que puede almacenar los datos y responder a sus consultas de manera eficiente. Puede mirar la base de datos incrustada como SQLite para almacenar los datos.

Lee sobre estos temas

Cómo crear una base de datos SQLite y crear tablas, tablas de acceso, etc. Cree una tabla simple para almacenar nombres de archivos triples, triples.

Convierta todos sus archivos de Excel a archivos CSV. Puede usar opencsv para analizar el archivo en Java (consulte las muestras que vienen con opencsv).

Analiza los archivos CSV y carga los datos en SQLite. Si el triple ya está en la base de datos, simplemente actualice el recuento, si no, inserte el triple.

Respuesta: 2

Necesito crear una clase Java que cree una copia de seguridad de mi base de datos. Mi problema es que no sé cómo hacerlo usando una base de datos SQLite. ¿Alguien puede mostrarme cómo?

Estoy en el proceso de hacer una GUI donde ingreso una cadena en un cuadro de texto y, una vez que hago clic en un botón J, un segundo cuadro de texto producirá la cadena que ingresé en el primero o producirá una cadena aleatoria ...

Quiero crear una aplicación simple capaz de editar imágenes. La vista principal de la aplicación contiene JSplitPane con dos JScrollPane. Cada JScrollPane contiene JPanel. El JPanel derecho tiene varios botones, etc. y el izquierdo ...

Tengo el siguiente código Java que usa la biblioteca bounce castle: byte [] privKey = new byte [32]; privKey [31] = 1; ECNamedCurveParameterSpec spec = ECNamedCurveTable.getParameterSpec ("secp256k1"); ECPoint ...