Chi*_*ain 0 java lambda filter java-stream
我想使用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));
| 归档时间: | 
 | 
| 查看次数: | 851 次 | 
| 最近记录: |