【问题标题】:What is the best way to find common elements of multiple text files with java?用java查找多个文本文件的共同元素的最佳方法是什么?
【发布时间】:2012-06-28 13:47:18
【问题描述】:

我有一个程序可以创建多个 rdf 三元组的文本文件。我需要比较三元组并快速完成,最好的方法是什么?我曾想过将三元组放入一个数组并进行比较,但每个文件可能有数十万个三元组,这将花费很长时间。我需要它尽可能接近实时,因为三元组将在文件中不断进行分类。任何帮助都会很棒。这些文件也在 AllegroGraph 存储库中,如果在那里比较容易的话。

一个想法:如果我将三元组存储在 excel 中(每行一个三元组)并且每个存储库一张表,

A:我怎样才能在工作表中找到重复项。 B:会不会很快。 和 C:我怎样才能从 Java 自动化呢?

【问题讨论】:

  • 你需要如何比较它们?您是要查找所有三元组的完整集合,还是要查找重复项?
  • 我想找到 2 个或更多文件共有的三元组,也许将它们存储在另一个文件中以供以后参考。

标签: java rdf file-comparison allegrograph


【解决方案1】:

您需要建立一个主索引来存储每个三元组及其出现在多少个文件中,以及每个文件中三元组的确切文件名和位置。您可以搜索主索引以实时回答查询。

当您更新、删除或创建新的 rdf 文件时,您需要更新主索引。

您需要存储主索引,以便可以对其进行更新和高效搜索。

简单的选择可能是使用关系数据库(如 MySql)来存储主索引。它可以回答你的查询,比如用简单的选择语句select * from rdfindex where triplecount > 2.查找常见的三元组@

编辑:您不能使用 HashMap 或类似的数据结构在内存中存储数十万个三元组。这就是为什么我建议使用数据库,它可以存储数据并有效地响应您的查询。您可以查看像 SQLite 这样的嵌入式数据库来存储数据。

阅读这些主题

How to create SQLite database and create tables, access tables etc., 创建一个简单的表来存储三重、三重计数、文件名。

将所有 Excel 文件转换为 CSV 文件。您可以使用opencsv 在 Java 中解析文件(查看 opencsv 附带的示例)。

解析 CSV 文件并将数据加载到 SQLite。如果三元组已经在数据库中,则只需更新计数,如果不插入三元组。

【讨论】:

  • 听起来不错,但我不知道该怎么做。我对此完全陌生,并且边走边学。关于如何开始的任何建议?
【解决方案2】:

据我所知,AllegroGraph 中有删除重复条目的功能,如果所有三元组都来自那里,这可能是一个选项。

【讨论】:

    猜你喜欢
    • 2019-10-22
    • 2011-10-22
    • 2010-10-14
    • 2020-01-27
    • 1970-01-01
    • 1970-01-01
    • 2022-11-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多