gpt4 book ai didi

java - 如何在JAVA中的lambda函数中使用循环?

转载 作者:行者123 更新时间:2023-12-01 06:37:45 25 4
gpt4 key购买 nike

我想使用 lambda 函数创建 FileNameFilter。

我的主要问题是我想在函数内引入一个循环。我尝试使用过滤器,但无法根据外部列表创建过滤器。

以下是我的代码:

    File targetDir = new File(path);
FilenameFilter deleteFilter = new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
for(String tag: pageTagsList){
if(name.equals(tag))
return true;
}
return false;
}
};
File[] foundFiles = targetDir.listFiles(deleteFilter);

我想做的是这样的:

File[] foundFiles = targetDir.listFiles(
(dir,name)->pageTagsList.stream()
.filter(//code to filter here)
.orElse(false)
);

有正确的方法吗?

最佳答案

您可以让 lambda 成为任何代码块(尽管从其内部引用的任何变量都必须是最终的)。为了达到您想要的结果,您可以执行以下操作:

File[] foundFiles = targetDir.listFiles((dir, name) -> pageTagsList.stream().anyMatch(name::equals));

关于java - 如何在JAVA中的lambda函数中使用循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40125103/

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