这是我的父类
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()。
所以我需要动态函数调用。我们能用谓词实现吗。不幸的是,我对谓词对象一无所知。请用里面的所有概念仔细解释你的答案。
是的,您可以创建不同的谓词并根据条件使用它们。
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());