У меня есть список объектов
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
}
Есть ли более эффективный или элегантный способ сделать это?