gpt4 book ai didi

java - 如何在过滤之后或之前对元素进行排序

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

public List<Path> removeUnwantedPaths(List<Path> listofPaths, List<String> ids) {
List<Path> entries;
entries = listofPaths.stream()
.filter(p -> ids.contains(p.getParent().getFileName().toString()))
.collect(Collectors.toList());

return entries;
}

entries 包含路径元素列表。元素未排序。我希望通过 p.getParent().getFileName().toString() 返回的 ids 对它们进行排序,以便在我返回集合之前对列表进行组织和排序。如何使用 Java 1.8 groupingBy() 对集合进行分组?因此,如果我的列表最初包含以下元素:

212_Hello.txt
312_Hello.txt
516_something.xml
212_Hello.xml

我希望列表组织为:

212_Hello.txt
212_Hello.xml
312_Hello.txt
516_something.xml

其中 212、312、516 是 ID。

最佳答案

将执行以下操作:

public static List<Path> removeUnwantedPaths(List<Path> listofPaths, List<String> ids) {
return listofPaths.stream()
.filter(p -> ids.contains(getIdFromPath(p)))
.sorted(Comparator.comparing(p -> getIdFromPath(p)))
.collect(Collectors.toList());
}

private static String getIdFromPath(Path p) {
return p.getParent().getFileName().toString();
}

它将:

  • 使用具有给定授权 ID 列表中 ID 的元素过滤给定列表
  • 根据id升序对流进行排序
  • 返回一个列表

它基于给定路径总是这样的事实:/src/resource/files/{id}/212_Hello.txt

关于java - 如何在过滤之后或之前对元素进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32524839/

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