gpt4 book ai didi

java - 将对象的 ArrayList 转换为 String,并且 CVS 文件中该字符串的开头和结尾不包含引号字符 ""

转载 作者:行者123 更新时间:2023-11-30 03:27:52 27 4
gpt4 key购买 nike

我尝试使用 apache commons CSV 将对象 (Dico) 的 ArrayList 中的值写入 CSV 文件中.

问题是,当我使用 StringBuilder 将 Dico 对象转换为字符串时,引号字符位于开头和结尾,我需要在写入 CSV 文件之前将其删除。

这是我尝试在 CSV 文件中节省重量的 Dico 类

public class Dico  
{ private String m_term; private double m_weight; private int m_Id_doc; }

public String toString()
{ return String.valueOf(this.getWeight()); }

这是我用来将 Dico 的 ArrayList 转换为字符串的函数:

// construct new string from weigth of eche term in vector
StringBuilder sb = new StringBuilder();
// vector is List<Dico>
vector.stream().forEach((str) -> { sb.append(str).append(","); });

要使用 apache commons CSV 逐行将此数据写入 cvs 文件中,我使用循环迭代 List> 从 List 中获取每个 dico 的权重并将其保存在字符串中。

   //initialize FileWriter object  
fileWriter = new FileWriter(fileName);
csvFilePrinter = new CSVPrinter(fileWriter, csvFileFormat);//initialize CSVPrinter object
csvFilePrinter.printRecord(FILE_HEADER); //Create CSV file header

for (List list_id:sublists) //Write a each node list by id to the CSV file

{
vector= weight_term(list_id,sinficatif);
List DataRecord = new ArrayList();
StringBuilder sb = new StringBuilder();// construct new string from weigth of eche term in vector
String value= null;
List<String> weights = new ArrayList<> ();

for(Dico str: vector)
{
sb.append(str).append(",");
value = sb.substring(0, sb.length()-1).toString();
}

DataRecord.add(String.valueOf(vector.get(0).getDocId()));// id of list
DataRecord.add(value);
csvFilePrinter.printRecord(DataRecord);
}

结果:

输入为[1, foo, 1.5, 1, bar, 1.15, 1, glu, 0.0]

CSV 文件中的输出为 1,"1.5,1.15,0.0"

我想要这个:1,1.5,1.15,0.0

如何在没有“”的情况下保存它,当我使用方法 toString 将数组 Vector 转换为 string 时,我也得到相同的结果。

注意:

引号字符会自动添加!

最佳答案

与其使用 toString() 方法来获取所需的值,为什么不直接使用 getWeight() 呢?

关于java - 将对象的 ArrayList 转换为 String,并且 CVS 文件中该字符串的开头和结尾不包含引号字符 "",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29749169/

27 4 0