首页 > 解决方案 > 将两个列表展平为字符串 .csv 样式格式

问题描述

我有两个列表 aList<String> headers和 aList<Row> rows本质上是 aList<List<String>> 我正在尝试展平这些列表以获得所需的输出:

Name,ID,Value
John Doe,1111,XXX
Jane Doe,2222,YYY

我目前正在使用迭代器来检查标题列表并将它们附加到字符串构建器中

        List<String> headers = ((RowListResult) result).getHeaders();
        List<RowListResult.Row> rows = ((RowListResult) result).getRows();

        output = output.concat(String.join(",", headers)).concat("\n");
        for(RowListResult.Row row: rows) output = output.concat(String.join(",", row.getColumns().toString()).concat("\n")).replace("/[[]]/", "");

        System.out.println(output);
        return null;
    }
}

我打算对行做同样的事情,但是我觉得我让这种方式变得更难了,我应该这样做,最后我必须删除每行末尾的逗号。有没有更好的方法来实现这一点?朝正确的方向轻推会很有帮助。我还可以分享您可能需要的任何其他内容,只需发表评论即可。

数据:调试器中的数据

Name,ID,Value
[John Doe, 1111, XXX]
[Jane Doe, 2222, YYY]

标签: javaflat-file

解决方案


您可以使用String.join()

import java.util.Arrays;
import java.util.List;

class Main {
  public static void main(String[] args) {
    List<String> headers = Arrays.asList("header1","header2","header3");

    List<String> row1 = Arrays.asList("cell1","cell2","cell3");
    List<String> row2 = Arrays.asList("cell1","cell2","cell3");
    List<List<String>> rows = Arrays.asList(row1, row2);

    System.out.println(toString(headers, rows));
  }

  private static String toString(List<String> headers, List<List<String>> rows) {
    StringBuilder str = new StringBuilder();
    str.append(String.join(", ", headers)).append("\n");
    for (List<String> row: rows) str.append(String.join(", ", row)).append("\n");
    return str.toString();
  }
}

推荐阅读