Я изо всех сил пытаюсь преобразовать существующий forloop в лямбда-выражение. У меня есть список объектов (List<Task>
), который содержит карту с именем 'InputData' (Map<String, String>
). У меня также есть еще Map<String, String>
(Принятие).
Я хочу отфильтровать список объектов Task, в котором карта Task.InputData содержит все записи карты «Acceptance». Task.InputData может содержать дополнительные записи, но я хочу, чтобы переменные, которые существуют в Acceptance, должны существовать в Task.InputData.
Существующий цикл for выглядит следующим образом:
boolean addTask;
List<Task> finalResults = new ArrayList<>();
for (Task t : results) {
addTask = true;
for (Entry<String, String> k : kvVars.entrySet()) {
if (!t.getInputData().containsKey(k) || !t.getInputData().get(k).equals(k.getValue())) {
addTask = false;
}
}
if (addTask) {
finalResults.add(t);
}
}
I 'Я немного озадачен подходом, должен ли я пытаться объединить критерии плоской карты и фильтра или мне следует следовать логике в существующем цикле for.