Java 使用字符串谓词筛选流

Java 使用字符串谓词筛选流,java,java-stream,Java,Java Stream,我想创建一个方法,该方法接收数据文件列表,然后在其中一个字段上使用字符串谓词对其进行过滤,并返回数据文件列表而不是字符串 这是我的密码: public static List<DataFile> someMethod(List<DataFile> dataFiles) { return dataFiles .stream() .map(DataFile::getFileName) .filte

我想创建一个方法,该方法接收数据文件列表,然后在其中一个字段上使用字符串谓词对其进行过滤,并返回数据文件列表而不是字符串

这是我的密码:

public static List<DataFile> someMethod(List<DataFile> dataFiles) {
    return dataFiles
            .stream()
            .map(DataFile::getFileName)
            .filter(companyAndDateFilter(date, BLABLA, LALALA))
            .collect(Collectors.toList());
}

private static Predicate<String> companyAndDateFilter(LocalDate date, String... companyNames) {
    String companies = getCompaniesAsString(companyNames);
    String formattedDate = formatTheDate(date);
    Pattern pattern =  Pattern
            .compile("^(" + companies + ")_(" + formattedDate + ")");
    LOGGER.info("Filtering files using RegEx: " + pattern.pattern());
            return pattern.asPredicate();
}
公共静态列表方法(列表数据文件){
返回数据文件
.stream()
.map(数据文件::getFileName)
.filter(公司和数据过滤器(日期,布拉布拉,拉拉))
.collect(Collectors.toList());
}
私有静态谓词companyDataFilter(LocalDate日期、字符串…companyNames){
字符串companys=getcompanyassString(companyNames);
字符串formattedDate=formattedDate(日期);
图案
.编译(“^(“+公司+”)u(“+格式日期+”);
info(“使用正则表达式过滤文件:+pattern.pattern());
返回模式。asPredicate();
}
当我执行
.map(DataFile::getFileName)
时,我将我的流转换为
,但我希望将其保留为
,并且仍然在
DataFile::getFileName
上使用过滤器(即
谓词
)。这可能吗?

公共静态列表方法(列出数据文件){
public static List<DataFile> someMethod(List<DataFile> dataFiles) {
    Predicate<String> hasCompanyAndDate = companyAndDateFilter(date, BLABLA, LALALA);

    return dataFiles.stream()
        .filter(dataFile -> hasCompanyAndDate.test(dataFile.getFileName()))
        .collect(Collectors.toList());
}
谓词hascompanyddate=companyddatefilter(日期,BLABLA,LALALA); 返回dataFiles.stream() .filter(数据文件->hascompanyddate.test(数据文件.getFileName())) .collect(Collectors.toList()); }