java - 将两个列表展平为字符串 .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]
解决方案
您可以使用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();
}
}
推荐阅读
- machine-learning - 为什么我们需要将 K 设置为过滤方法中的输入?
- flutter - 找不到正确的提供者
在此之上 - python - 如何依靠 MongoDB 的电机驱动程序?
- rust - 如何从异步块中更改变量值而不获取它的所有权
- html - Django2.2 SQL-Server如何将复选框输入存储在数据库中
- angular - When I use *ngSwitch in a Bootstrap navbar the styling disappears
- python - PySide2 视频播放器:从 url 播放 .mp4 视频适用于 MacOSX 但不适用于 Windows 和 Linux
- python - 水平居中单选按钮标签
- data-structures - O(n) 的时间复杂度
- swift - 如何在静态 UITableView 中获取嵌入式动态 UITableView 的高度