当前位置: 首页 > 面试题库 >

Java-将哈希图写入CSV文件

郭乐意
2023-03-14
问题内容

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

例如:

key | value
abc | aabbcc
def | ddeeff

我想将此哈希图写入一个csv文件,以便我的csv文件包含以下行:

abc,aabbcc
def,ddeeff

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

提前致谢!


问题答案:

当您的问题是询问如何使用Super CSV进行此操作时,我认为我愿意(作为该项目的维护者)加入。

我最初以为您可以使用CsvBeanWriter和名称映射数组来迭代地图的条目集"key", "value",但这不起作用,因为HashMap的内部实现不允许反射获取键/值。

因此,您唯一的选择是使用CsvListWriter如下。至少通过这种方式,您不必担心转义CSV(这里的每个其他示例都以逗号开头…
aaarrggh!):

@Test
public void writeHashMapToCsv() throws Exception {
    Map<String, String> map = new HashMap<>();
    map.put("abc", "aabbcc");
    map.put("def", "ddeeff");

    StringWriter output = new StringWriter();
    try (ICsvListWriter listWriter = new CsvListWriter(output, 
         CsvPreference.STANDARD_PREFERENCE)){
        for (Map.Entry<String, String> entry : map.entrySet()){
            listWriter.write(entry.getKey(), entry.getValue());
        }
    }

    System.out.println(output);
}

输出:

abc,aabbcc
def,ddeeff


 类似资料:
  • 问题内容: 将结构转储到提供的csv文件中的惯用golang方法是什么?我在一个func里面,我的结构作为接口{}传递: 为什么要使用界面{}?-从JSON读取数据,可能会返回一些不同的结构,因此尝试编写足够通用的函数。 我的类型的一个例子: 问题答案: 如果您使用具体类型,将会容易得多。您可能想要使用该软件包,这是一个相关示例;https://golang.org/pkg/encoding/cs

  • 问题内容: 我有一个实现了hashCode()的向量类。它不是我写的,而是使用2个质数对2个向量分量进行异或运算。这里是: …因为这是来自已建立的Java库,所以我知道它可以正常工作。 然后,我有一个Boundary类,其中包含2个向量:“开始”和“结束”(代表直线的端点)。这两个向量的值是边界的特征。 在这里,我尝试为构成该边界的向量的唯一2元组(起点和终点)创建一个良好的hashCode()。

  • 我正在尝试使用 fwrite 将哈希表写入 C 文件并使用 fread 读取它。我有这个结构: 当我使用恐惧时,我有 和 fwrite: 但是,我无法在读写后正确访问数据。问题是什么?

  • 问题内容: 我有一个pandas数据框,我想将其写入CSV文件。我正在使用以下方法: 并得到错误: 有什么方法可以轻松解决此问题(即我的数据框中有Unicode字符)吗?有没有一种方法可以使用例如“ to-tab”方法(我认为不存在)写入制表符分隔文件而不是CSV? 问题答案: 要用制表符分隔,可以使用参数: 要使用特定的编码(例如),请使用参数:

  • 我有一个将一个项目映射到它的属性,例如,其中属性是从不同的数据源检索的。 例如,我们从数据库中获得属性,而从Solr中获得属性。 当我最初从DB检索时,我使用以避免阻塞主线程,如下所示: 然后通过对Solr的异步调用将其链接起来,这样我最终将有一个异步Hashmap将项映射到它们的属性,即(因此我循环遍历Hashmap的键,并用新属性更新值,使用访问旧属性)。 最后,我将数据映射到csv,这就是问

  • 我有以下代码: 使用System在我的控制台中输出代码。出来println(line)提供了正确的输出。然而,当我打开CSV文件时,它似乎是反向写入的。Excel首先抱怨行的数量。但是,仅显示原始数据集的最后一行。数据集(预处理效率很低)包含1000多行。因此,我不能简单地附加每个条目。 有更好的方法吗? 提示和技巧是非常受欢迎的。此外,我还尝试了几种编写器:-CSVwrite-BufferedW