java - 按空格分隔列表项,按制表符分隔更高级别的指标
问题描述
我有以下功能:
public String tabSerializer(String log, String time) {
StringJoiner joiner = new StringJoiner("\t");
addValue(company, joiner);
addValue(users, joiner);
...
return joiner.toString();
}
private static void addValue(Object value, StringJoiner joiner){
if(value instanceof List){
addValuesFromList((List<?>)value, joiner);
}
else{
joiner.add(String.valueOf(value));
}
}
private static void addValuesFromList(List<?> arr, StringJoiner joiner) {
for(int i=0; i<arr.size(); i++){
Object value = arr.get(i);
addValue(value, joiner);
}
}
company 是一个字符串列表。示例:[苹果、芒果]。我正在尝试通过选项卡分隔 tabSerializer() 函数中传递的所有值。但是,使用我当前的代码,我什至在列表值(例如,苹果芒果)而不是空格之间获得制表符。
我想用空格分隔列表值,同时仍然用制表符分隔所有更高级别的维度。
我尝试添加:value= value + " " in the "addValuesFromList()"
功能,但不知道如何进一步使用它与连接器集成。
任何帮助,将不胜感激。
解决方案
或者,如果您仍想使用 StringJoiner,请在 addValuesFromList 中使用第二个连接器。
private static void addValuesFromList(List<?> arr, StringJoiner joiner) {
StringJoiner spaceJoiner = new StringJoiner(" ");
for (int i = 0; i < arr.size(); i++) {
Object value = arr.get(i);
spaceJoiner.add(String.valueOf(value));
}
String spacedValue = spaceJoiner.toString();
addValue(spacedValue, joiner);
}
它会做你需要的吗?
推荐阅读
- java - 为什么此代码为相同的输入提供两个不同的输出?
- python - pandas.to_datetime() 的格式
- c - 需要时加载 .c 文件
- c# - 从 API 获取数据到 SSIS 脚本组件输出缓冲区
- ms-access - GetOption() 缺失 – 如何获取 DAO.DBEngine 的 SetOption dbMaxLocksPerFile 的值?
- reactjs - 使用反应组件生命周期方法了解初始状态设置
- ruby-on-rails - 活动资源轨未获取数据
- javascript - ANTD rowSelection 不会检入 UI
- kubernetes - 如何在 Helm 图表模板中获取服务的 NodePort 和外部 IP?
- python - 从另一个数据帧更新熊猫数据帧中的特定值