作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想使用 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/
我是一名优秀的程序员,十分优秀!