使用逗号将 HashMap 输出分隔为 .csv
Separating HashMap Output to .csv with Comma
在这个程序中,我将数据从 HashMap 数据库导出到 .csv。写入文件的数据是key和studentInformation,由Name、Major、GPA组成。代码将其输出到 .csv 文件,但我希望每个值都用逗号分隔,因此每个值都位于电子表格的不同列中。我将如何在数据库的每个输出上实现逗号????提前致谢。
//Output the database to the file
Map.Entry<Integer, Student> studentInformation = iterator.next();
int key = studentInformation.getKey();
bW.write("Student ID: " + key + (",") + studentInformation.getValue() + ("\n\n");
如果我在 studentInformation.getValue() 之后添加 + (","),它不会分隔 studentInformation 的每个值...有什么想法吗?
创建一个格式化程序函数,它接受一个 Student
和 returns 一个字符串。然后为地图中的每个值调用它。
public static String formatCsv(Student s) {
return s.getName() + ", " + s.getGrade() + ", " + s.getHeight();
}
或者您可以使用 Guava Joiner class
public static String formatCsv(Student s) {
return Joiner.on(',').join(s.getName(), s.getGrade(), s.getHeight());
}
您需要在 CSV 列中的每个字段都必须从 Student
class.
中单独检索
例如:
public static final String CSV_SEPARATOR = ",";
...
Map.Entry<Integer, Student> studentEntry = iterator.next();
int key = studentEntry.getKey();
Student student = studentEntry.getValue();
String line = "Student ID: " + key + CSV_SEPARATOR + student.getName()
+ CSV_SEPARATOR + student.getMajor() + System.lineSeparator();
bW.write(line);
使用自定义常量作为 CSV_SEPARATOR
不重复“,”并且更喜欢
System.lineSeparator()
到 \n\n
即 OS 依赖。
最后为什么要重新发明轮子?
SuperCSV 和 OpenCSV 等库做得很好。
您应该尝试其中之一。
在这个程序中,我将数据从 HashMap 数据库导出到 .csv。写入文件的数据是key和studentInformation,由Name、Major、GPA组成。代码将其输出到 .csv 文件,但我希望每个值都用逗号分隔,因此每个值都位于电子表格的不同列中。我将如何在数据库的每个输出上实现逗号????提前致谢。
//Output the database to the file
Map.Entry<Integer, Student> studentInformation = iterator.next();
int key = studentInformation.getKey();
bW.write("Student ID: " + key + (",") + studentInformation.getValue() + ("\n\n");
如果我在 studentInformation.getValue() 之后添加 + (","),它不会分隔 studentInformation 的每个值...有什么想法吗?
创建一个格式化程序函数,它接受一个 Student
和 returns 一个字符串。然后为地图中的每个值调用它。
public static String formatCsv(Student s) {
return s.getName() + ", " + s.getGrade() + ", " + s.getHeight();
}
或者您可以使用 Guava Joiner class
public static String formatCsv(Student s) {
return Joiner.on(',').join(s.getName(), s.getGrade(), s.getHeight());
}
您需要在 CSV 列中的每个字段都必须从 Student
class.
中单独检索
例如:
public static final String CSV_SEPARATOR = ",";
...
Map.Entry<Integer, Student> studentEntry = iterator.next();
int key = studentEntry.getKey();
Student student = studentEntry.getValue();
String line = "Student ID: " + key + CSV_SEPARATOR + student.getName()
+ CSV_SEPARATOR + student.getMajor() + System.lineSeparator();
bW.write(line);
使用自定义常量作为 CSV_SEPARATOR
不重复“,”并且更喜欢
System.lineSeparator()
到 \n\n
即 OS 依赖。
最后为什么要重新发明轮子?
SuperCSV 和 OpenCSV 等库做得很好。
您应该尝试其中之一。