java - Univocity - 如何在没有原始数组的情况下正确写入一行

标签 java csv univocity

我正在使用这个:

List<String> row = new ArrayList<String>();
row.add("value 1");
row.add("value 2");
writer.writeRow(row);

它输出本质上是 ArrayList toString() 值:

"[value1, value2]"

如何获得以下内容?

"value1, value2"

最佳答案

更糟糕的是,标题是从列表中正确写入的:

List<String> headers = new ArrayList<String>();
headers.add("date");
writer.writeHeaders(headers);

我查看了他们的一些示例(特别是 com.univocity.parsers.examples.CsvWriterExamples),发现输出正确

所以我得到了这个:

String[] rowData = new String[2];
rowData[0] = "value 1";
rowData[1] = "value 2";
mWriter.writeRow(rowData);

这也产生了正确的输出。

由于还有一个带有 (Object... object) 参数的重载方法,我猜测 Java 使用该方法。

我的问题可以通过将列表转换为集合来解决。

mWriter.writeRow((Collection)row);

我知道这几乎就是 Java 的工作方式,但我认为如果不需要极端性能,大多数人会更愿意避免使用原语,因此这应该是开箱即用的 - 可能使用不同的签名方法。

关于java - Univocity - 如何在没有原始数组的情况下正确写入一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47867694/

相关文章:

Java覆盖两个接口(interface),方法名称冲突

python - Unicode解码错误: 'utf8' codec can't decode

java - Univocity - 使用 RowWriterProcessor 写出引号转义字符

java - 正则表达式模式对于中间字符串的长度失败

java - 插入查询既不执行也不给出异常

java - 从 clojure.lang.LazySeq 转换为类型 org.apache.spark.api.java.JavaRDD

java - UniVocity 如何向自定义 validator 添加参数

php - 在 PHP 中对逗号分隔值列表运行选择

magento - 翻译 Magento 前端

java - 如何在CSV解析后根据一定的规则连接字符串 - 逐行