gpt4 book ai didi

java - 如何将 Map> 流式传输到包含绝对路径作为字符串的 List

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:00:25 24 4
gpt4 key购买 nike

我当前的项目需要一种方法来转换 Map<Path, List<Path>>List<String>包含绝对路径。 Map包含 Path s 个文件,按包含它们的目录分组。
但是,我必须将找到的文件的所有绝对路径写入转储文件,这就是为什么我需要 String s 而不是 Path s.
目前,我使用以下使用嵌套的方法来完成 forEach调用 Map及其值(value)观:

public List<String> getAllAbsolutePaths(Map<Path, List<Path>> filesInPath) {
List<String> absolutePaths = new ArrayList<String>();

filesInPath.forEach((directory, files) -> {
files.forEach(file -> absolutePaths.add(file.toAbsolutePath().toString()));
});

return absolutePaths;
}

这是行得通的,但我只想知道一种(甚至更多)现代的方式来通过流式传输 keySet 来做到这一点或 valuesMap .
我遇到的问题是我只是不知道如何应用 file.toAbsolutePath().toString()在流中。我只能收集所有 Path作为 List<Path> :

List<Path> filePaths = sqlFilesInDirectories.values().stream()
.flatMap(List::stream)
.map(Path::toAbsolutePath)
.collect(Collectors.toList());

我怎样才能改变这个语句(或写一个完全不同的语句),从而得到我想要的 List<String>结果为 Path.toAbsolutePath().toString()

最佳答案

你几乎完成了,你只需要在生成的路径列表上调用 toString:

List<String> strings = filePaths.stream()
.map(Object::toString)
.collect(Collectors.toList());

或直接在您的信息流中:

List<String> filePaths = sqlFilesInDirectories.values().stream()
.flatMap(List::stream)
.map(Path::toAbsolutePath)
.map(Object::toString)
.collect(Collectors.toList());

关于java - 如何将 Map<Path, List<Path>> 流式传输到包含绝对路径作为字符串的 List<String>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55360147/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com