这是我的父类
class Parent
{
String attrib1;
String attrib2;
String attrib3;
// getters and setters of three fields
然后我创建了一个列表
List<Parent> objList = new ArrayList<Parent>();
然后我向objList添加了许多Parent对象。
现在我想根据类中字段的值过滤这些对象。但我只会动态获取字段名称。 我想为此目的使用流。
List<Parent> temp = objList.stream()
.filter(nestedDo -> nestedDo.getAttrib2() == "manu")
.collect(Collectors.toList());
这里getAttrib2()有所不同。它可以是getAttrib1()或getAttrib3()。
所以我需要动态函数调用。我们可以使用Predicates实现它吗?不幸的是,我对Predicate对象一无所知。请详细解释其中的所有概念。
答案 0 :(得分:2)
是的,您可以创建不同的Predicate并根据条件使用它们。
Predicate<Parent> first= e -> e.getAttrib1().equals("nanu");
Predicate<Parent> second= e -> e.getAttrib2().equals("..");
List<Parent> temp = objList.stream()
.filter(first) // Similarly you can call second
.collect(Collectors.toList());