使用逗号将HashMap输出分隔为.csv

时间:2017-04-27 19:39:15

标签: java csv hashmap comma bufferedwriter

在这个程序中,我将数据从HashMap数据库导出到.csv。写入文件的数据是密钥和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()之后添加+(&#34;,&#34;),它不会将studentInformation的每个值分开......有什么想法吗?

2 个答案:

答案 0 :(得分:1)

必须从Student类单独检索CSV列中所需的每个字段 例如:

  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不重复&#34;,&#34;并且更喜欢    操作系统依赖的System.lineSeparator()\n\n

最后为什么要重新发明轮子? SuperCSV和OpenCSV等图书馆做得非常好 你应该尝试其中一个。

答案 1 :(得分:0)

创建一个格式化函数,该函数接受Student并返回一个String。然后为地图中的每个值调用它。

public static String formatCsv(Student s) {
  return s.getName() + ", " + s.getGrade() + ", " + s.getHeight();
}

或者您可以使用Guava Joiner类

public static String formatCsv(Student s) {
  return Joiner.on(',').join(s.getName(), s.getGrade(), s.getHeight());
}