我有以下列表,其中包含一系列文件夹路径。其中一些是多余的,因此我需要删除它们,最终列表应该只包含底层文件夹:
初始列表:
var paths = new List<string>
{
"Pavements/",
"Pavements/2019_05/",
"Pavements/2019_06/",
"Pavements/2019_06/A/",
"Roads/",
"Roads/2019_06/"
};
最终列表应如下所示:
paths =
{
"Pavements/2019_05/",
"Pavements/2019_06/A/",
"Roads/2019_06/"
};
即所有上层文件夹路径均已删除。
有谁知道我怎样才能实现这个目标?我有一种感觉,我需要一种递归方法,但不确定如何去做。我正在使用 C#,但用 java 或类似的东西回答是可以的。 谢谢。
最佳答案
实现此目的的一种方法是使用 linq 查询,该查询将每个项目与所有其他项目进行比较,并且仅当其他项目均不以该项目开头时才返回该项目:
paths = paths.Where(path => !paths.Any(p => p != path && p.StartsWith(path))).ToList();
关于java - 从列表中删除多余的文件夹路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56744487/