Java - 将 hashmap 写入 csv 文件

标签 java csv hashmap supercsv

我有一个带有字符串键和字符串值的 HashMap 。它包含大量键及其各自的值。

例如:

key | value
abc | aabbcc
def | ddeeff

我想将这个 hashmap 写入一个 csv 文件,这样我的 csv 文件包含如下行:

abc,aabbcc
def,ddeeff

我在这里使用 supercsv 库尝试了以下示例:http://javafascination.blogspot.com/2009/07/csv-write-using-java.html .但是,在此示例中,您必须为要添加到 csv 文件的每一行创建一个 HashMap 。我有大量的键值对,这意味着需要创建多个 HashMap ,每个 HashMap 包含一行数据。我想知道是否有更优化的方法可用于此用例。

最佳答案

使用 Jackson API,可以将 map 或 map 列表写入 CSV 文件。查看完整示例 here

 /**
 * @param listOfMap
 * @param writer
 * @throws IOException
 */
public static void csvWriter(List<HashMap<String, String>> listOfMap, Writer writer) throws IOException {
    CsvSchema schema = null;
    CsvSchema.Builder schemaBuilder = CsvSchema.builder();
    if (listOfMap != null && !listOfMap.isEmpty()) {
        for (String col : listOfMap.get(0).keySet()) {
            schemaBuilder.addColumn(col);
        }
        schema = schemaBuilder.build().withLineSeparator(System.lineSeparator()).withHeader();
    }
    CsvMapper mapper = new CsvMapper();
    mapper.writer(schema).writeValues(writer).writeAll(listOfMap);
    writer.flush();
}

关于Java - 将 hashmap 写入 csv 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31172003/

相关文章:

java - 字符串到列表<String>的内存高效映射

java - 从多个线程(不修改)从 java.util.HashMap 获取值是否安全?

java - Sbt/Activator 未在 Play2 java 项目中运行所有测试

java - 执行外部命令并从 Jython 2.1 读取 stderr/stdout

python - 如何使用行数和列名从 CSV 文件调用组件

java - 读取 csv 文件时扫描仪出现 NoSuchElementException

hashmap - 带有 HashMap 查找的迭代器映射。在任何不存在的 key 上失败

java - 如何在 Azure 上从后端自动执行 Tomcat/Java 应用程序上的用户操作?

java - 如何在java对话框中使字体变粗?

python - 分离一个csv进行处理