Java OpenCSV - 2 列表比较和复制

标签 java csv import export opencsv

我将使用 OpenCSV 制作一个应用程序,比较 2 个 .csv 列表。它应该像这样工作:

  1. 打开 2 个 .csv 文件(每个文件包含以下列:姓名、电子邮件)
  2. 保存结果(这是一个问题,我不知道是否应该将其保存到表格或其他内容中)
  3. 比较“电子邮件列”的列表 1 和列表 2 的值。
  4. 如果列表 1 中的电子邮件出现在列表 2 中 - 将其删除(从列表 1 中)
  5. 将结果导出到新的 .csv 文件

不知道这个算法好不好。请告诉我在这种情况下保存读取 .csv 文件结果的最佳选项。

亲切的问候

最佳答案

您可以使用univocity-parsers更轻松地解决这个问题因为它可以将您的数据读入列中:

CsvParserSettings parserSettings = new CsvParserSettings(); //parser config with many options, check the tutorial
parserSettings.setHeaderExtractionEnabled(true); // uses the first row as headers

// To get the values of all columns, use a column processor
ColumnProcessor rowProcessor = new ColumnProcessor();
parserSettings.setRowProcessor(rowProcessor);

CsvParser parser = new CsvParser(parserSettings);

//This will parse everything and pass the data to the column processor
parser.parse(new FileReader(new File("/path/to/your/file.csv")));

//Finally, we can get the column values:
Map<String, List<String>> columnValues = rowProcessor.getColumnValuesAsMapOfNames();

假设您用它解析了第二个 CSV。只需获取电子邮件并创建一组即可:

Set<String> emails = new HashSet<>(columnValues.get("Email"));

现在只需迭代第一个 CSV 并检查电子邮件是否在 emails 集中。

披露:我是这个库的作者。它是开源且免费的(Apache V2.0 许可证)。

关于Java OpenCSV - 2 列表比较和复制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34088132/

相关文章:

csv - BizTalk 平面文件架构 - 即使收到空白平面文件也生成 XML 文件

postgresql - 使用 DataGrip 从 CSV 导入时预配置列类型

Java Android - 为什么我的调试看不到类

java - 在 kryonet 中,如何在不停止程序的情况下断开与服务器的连接?

java - 使用 Java 代码创建相对布局时出错

python - 为什么循环导入似乎在调用堆栈中更靠前,但在更靠下的位置引发 ImportError?

python - 无法导入 comtypes.gen

java - 无法在 MP Android 图表中的条形图中显示枢轴点

PHP 到 CSV 输出下载

database - 在 SAS 中导入许多文件 .txt