我有一个对象列表
public class Object
{
String attribute1,
attribute2,
atribute3;
}
我想根据列表的属性是否与HashMap中指定的值匹配来筛选该列表。每次只能包含attribute1和attribute2或仅包含attribute2时,映射可以有所不同。
我当前的方法只是检查键是否存在,然后过滤列表,否则检查下一个键,但是如果我的对象具有许多属性,这可能会变得非常麻烦。
public List<Objects> filterList(HashMap<String, String> filter)
{
List<Objects> list = getList();
if(filter.containsKey("attribute1"))
{
list.removeIf(n -> !n.getAttribute1().equals(filter.get("attribute1")));
}
//repeats for all attributes
}
有没有更有效或更优雅的方法?