外部配置的過濾可以說,我有一個外部的JSON作爲:使用Java lambda表達式
[{
"condition": "equals",
"field": "name",
"value": "jack"
},
{
"condition": "greater",
"field": "age",
"value": 25
}
]
這意味着我要檢查,在列表中的用戶對象的人的名字爲"jack"
和age > 25
。 Java 8過濾非常簡單(示例中僅顯示名稱過濾)。
但是,我想使此過濾器可配置並應用多個過濾器。假設下面的人員pojo(這是不言自明的),需要名稱和年齡,我如何使過濾器動態或可配置?
public class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
// Accessors and Mutators
}
List<Person> persons = Arrays.asList(
new Person("mkyong", 30),
new Person("jack", 20),
new Person("lawrence", 40)
);
Person result1 = persons.stream() // Convert to steam
.filter(x -> "jack".equals(x.getName())) // we want "jack" only
.findAny() // If 'findAny' then return found
.orElse(null);
我期待着滿足的標準,結果Person對象的列表。