【发布时间】:2019-07-30 21:07:12
【问题描述】:
我有一个用户输入的字符串 [],我想根据设备的主机名是否包含任何用户输入来过滤设备集合。
我正在尝试遵循 https://docs.oracle.com/javase/tutorial/java/javaOO/lambdaexpressions.html 的课程来做到这一点。
interface PredicateOperation{
Predicate operation(String[] input);
}
public Predicate getPredicate(String[] input, PredicateOperation op){
return op.operation(input);
}
private TufinDeviceCollection<TufinDevice> filter(TufinDeviceCollection<TufinDevice> devices) {
//Check if any HostNames of the devices contain any of the items in String[] modelContains
devices = devices.stream()
.sequential()
.filter(//How do i create this predicate?)//we need to create the lamda expression to evaulate if the hostName of device d contains any of the items String[] userInput
.collect(Collectors.toCollection(TufinDeviceCollection<TufinDevice>::new));
}
我不清楚如何定义 .filter(..) 中的 PredicateOperation
【问题讨论】:
-
我不清楚你到底想做什么,但作为澄清的第一步——包括你自己——停止使用原始
Predicates。适当地参数化该类型的所有用途。