Мне нужно взять ArrayList
из HashMap
и создать CSV с помощью Apache Commons CSV.Однако, это не запись значений в правильные заголовки.Есть ли простой способ сделать так, чтобы библиотека автоматически помещала значения в нужные заголовки, используя Enum?Я не хочу назначать его вручную, так как буду добавлять дополнительные столбцы.
Вот что он производит:
Вот что у меня есть:
Header.java
public enum Header
{
FIRST_NAME(),
LAST_NAME(),
GENDER();
}
Main
public static void main(String[] args)
{
List<Map<Header, String>> output = new ArrayList<>();
Map<Header, String> map = new HashMap<>();
map.put(Header.FIRST_NAME, "John");
map.put(Header.LAST_NAME, "Andrew");
map.put(Header.GENDER, "Male");
output.add(map);
Map<Header, String> map2 = new HashMap<>();
map2.put(Header.FIRST_NAME, "Sally");
map2.put(Header.LAST_NAME, "Andrew");
map2.put(Header.GENDER, "Female");
output.add(map2);
String outputFile = System.getProperty("java.io.tmpdir")+"test.csv";
try (
BufferedWriter writer = Files.newBufferedWriter(Paths.get(outputFile));
CSVPrinter csvPrinter = new CSVPrinter(writer, CSVFormat.DEFAULT
.withHeader(Header.class));)
{
csvPrinter.printRecords(output);
csvPrinter.flush();
} catch (IOException ex)
{
Logger.getLogger(TestCSV.class.getName()).log(Level.SEVERE, null, ex);
}
}