gpt4 book ai didi

java - 如何使用集合读取和显示csv文件

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:02:55 25 4
gpt4 key购买 nike

我将 tsv 文件的数据添加到列表中。但它反复提供数据。

这是tsv文件

UserID  City    State   Country ZipCode DegreeType  Major   GraduationDate  WorkHistoryCount           TotalYearsExperience CurrentlyEmployed   ManagedOthers   ManagedHowMany
47 Paramount CA US 90723 High School 6/1/1999 0:00 3 10 Yes No 0
72 La Mesa CA US 91941 Master's Anthropology 1/1/2011 0:00 10 8 Yes No 0
80 Williamstown NJ US 8094 High School Not Applicable 6/1/1985 0:00 5 11 Yes Yes 5
98 Astoria NY US 11105 Master's Journalism 5/1/2007 0:00 3 3 Yes No 0

这是我的代码

public class tsv_read{

public static void main(String[] arg) throws Exception {

BufferedReader TSVFile =
new BufferedReader(new FileReader("tsvfile.tsv"));

String dataRow = TSVFile.readLine();
List<String> list = new ArrayList<String>();
while (dataRow != null){
String[] dataArray = dataRow.split("\t");
for (String item:dataArray) {

list.add(item);

}
Iterator<String> it = list.iterator();
while (it.hasNext()) {
String txt = it.next();
System.out.print(txt);
}
System.out.println(); // Print the data line.
dataRow = TSVFile.readLine();
}

TSVFile.close();

System.out.println();

} //main()
}

这是我得到的结果

    UserIDCityStateCountryZipCodeDegreeTypeMajorGraduationDateWorkHistoryCountTotalYearsExperienceCurrentlyEmployedManagedOthersManagedHowMany
UserIDCityStateCountryZipCodeDegreeTypeMajorGraduationDateWorkHistoryCountTotalYearsExperienceCurrentlyEmployedManagedOthersManagedHowMany47ParamountCAUS90723High School6/1/1999 0:00310YesNo0
UserIDCityStateCountryZipCodeDegreeTypeMajorGraduationDateWorkHistoryCountTotalYearsExperienceCurrentlyEmployedManagedOthersManagedHowMany47ParamountCAUS90723High School6/1/1999 0:00310YesNo072La MesaCAUS91941Master'sAnthropology1/1/2011 0:00108YesNo0
UserIDCityStateCountryZipCodeDegreeTypeMajorGraduationDateWorkHistoryCountTotalYearsExperienceCurrentlyEmployedManagedOthersManagedHowMany47ParamountCAUS90723High School6/1/1999 0:00310YesNo072La MesaCAUS91941Master'sAnthropology1/1/2011 0:00108YesNo080WilliamstownNJUS8094High SchoolNot Applicable6/1/1985 0:00511YesYes5
UserIDCityStateCountryZipCodeDegreeTypeMajorGraduationDateWorkHistoryCountTotalYearsExperienceCurrentlyEmployedManagedOthersManagedHowMany47ParamountCAUS90723High School6/1/1999 0:00310YesNo072La MesaCAUS91941Master'sAnthropology1/1/2011 0:00108YesNo080WilliamstownNJUS8094High SchoolNot Applicable6/1/1985 0:00511YesYes598AstoriaNYUS11105Master'sJournalism5/1/2007 0:0033YesNo0

我想要表格格式的输出

最佳答案

你只需要添加

list.clear();

在每次循环运行的开始。

while (dataRow != null){
list.clear();
String[] dataArray = dataRow.split("\t");
// etc.

目前正在发生的事情是您的 List 越来越大...在第一行中,您添加了该行中的所有字段,然后在第二行中添加了所有这些字段到末尾,依此类推...但您永远不会清空列表并重新开始。

另一种解决方案是将 List 声明移动到循环内:

String dataRow = TSVFile.readLine();
while (dataRow != null){
List<String> list = new ArrayList<String>();
String[] dataArray = dataRow.split("\t");
// etc.

这样,您每次都会得到一个新列表。

如果你想知道为什么你正在打印的字段都一起运行,顺便说一下,这是因为你重复调用 System.out.print(txt) 而没有任何类型的分隔器。您可能希望从 System.out.print(txt+"") 开始,直到您决定了您想要的确切格式。

关于java - 如何使用集合读取和显示csv文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26462273/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com