Гуава таблицы в CSVPrinter с заголовком - PullRequest
0 голосов
/ 14 января 2020

Этот вопрос является расширением этого . ОП попросил напечатать таблицу гуавы с помощью CSVPrinter:

final Table<String, String, Double> graph = HashBasedTable.create();

graph.put("A", "FirstCol", 0.0);
graph.put("A", "SecondCol", 1.0);
graph.put("B", "FirstCol", 0.1);
graph.put("B", "SecondCol", 1.1);

final Appendable out = new StringBuilder();
try {
    final CSVPrinter printer = CSVFormat.DEFAULT.print(out);

    printer.printRecords(graph.rowMap().entrySet()
      .stream()
      .map(entry -> ImmutableList.builder()
            .add(entry.getKey())
            .addAll(entry.getValue().values())
            .build())
      .collect(Collectors.toList()));

} catch (final IOException e) {
    e.printStackTrace();
}

System.out.println(out);

С предыдущим кодом, который объединяет принятый ответ, CSVPrinter печатает следующую таблицу:

A,0.0,1.0
B,0.1,1.1

Я хочу знать, существует ли метод для сохранения строк в ключах столбцов таблицы в качестве заголовка для CSV, поэтому в примере должно быть напечатано следующее:

AorB,FirstCol,SecondCol
A,0.0,1.0
B,0.1,1.1

Заранее спасибо !

1 Ответ

1 голос
/ 14 января 2020

Раздел Печать с заголовками из Apache В руководстве пользователя Commons CSV предлагается использовать CSVFormat.withHeader . В вашем случае это может выглядеть так:

final String[] header = new ImmutableList.Builder<String>()
    .add("AorB").addAll(graph.columnKeySet())
    .build().toArray(new String[0]);
final CSVPrinter printer = CSVFormat.DEFAULT.withHeader(header).print(out);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...