jdk8 优化以下代码: if (null != getFileResult && getFileResult.isSuccess()) { for (String fullPath : getFileResult.getData()) { R<List<String>> previewResult = resourceClient.viewFileByPath(new Path(fullPath).toUri().getPath(), query.getCurrent(), query.getSize(), "\n"); if (null != previewResult && previewResult.isSuccess()) { for (MetaColumn tableColumn : getTableColumns(datasourceName, tableName)) { headers.add(tableColumn.getColumnName()); } List<String> datas = previewResult.getData(); contents = processCSVData(datas, headers); } } }
时间: 2024-02-27 17:53:11 浏览: 107
可以使用流式编程来简化代码,如下所示:
```
getFileResult.getData().stream()
.map(fullPath -> resourceClient.viewFileByPath(new Path(fullPath).toUri().getPath(), query.getCurrent(), query.getSize(), "\n"))
.filter(Objects::nonNull)
.filter(R::isSuccess)
.flatMap(previewResult -> {
List<MetaColumn> tableColumns = getTableColumns(datasourceName, tableName);
headers.addAll(tableColumns.stream().map(MetaColumn::getColumnName).collect(Collectors.toList()));
List<String> datas = previewResult.getData();
return processCSVData(datas, tableColumns).stream();
})
.forEach(contents::add);
```
这里使用了流式编程,将代码简化为了几行。使用 `stream()` 方法将 `getFileResult.getData()` 转换为流,然后使用 `map()` 方法将每个 `fullPath` 转换为 `previewResult`,然后使用 `filter()` 方法过滤掉 `previewResult` 为空或不成功的情况。接着使用 `flatMap()` 方法将 `previewResult` 中的数据转换为 `contents` 列表中的数据,并在其中添加表头信息。最后使用 `forEach()` 方法将处理后的数据添加到 `contents` 列表中。
阅读全文