我想创建一个接收DataFiles List的方法,然后在其中一个字段上使用String谓词过滤它,并返回DataFiles的List而不是字符串。
这是我的代码:
>> A{1}
ans =
1.0e+05 *
1.0656 + 2.2578i
-1.7602 + 1.9836i
-2.9125 + 0.0000i
当我执行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();
}
时,我将我的流转换为.map(DataFile::getFileName)
,但我希望将其保留为Stream<String>
并仍然使用过滤器(Stream<DataFile>
){ {1}}。这可能吗?
答案 0 :(得分:5)
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());
}