Я бы хотел отфильтровать элемент списка карты, а затем вернуть карту в java 8 +
public class Test {
List<Employee> list1 = new ArrayList<>();
list1.add(emp1); // emp1's filterEmployee return true
list1.add(emp2); // emp2's filterEmployee return true
list1.add(emp3); // emp3's filterEmployee return false
List<Employee> list2 = new ArrayList<>();
list2.add(emp4); // emp4's filterEmployee return false
list2.add(emp5); // emp5's filterEmployee return true
list2.add(emp6); // emp6's filterEmployee return true
map.put("Sales", list1);
map.put("Tech", list2);
public Map<Department, List<Employee>> getEmployeeByDepartment( Map<Department, List<Employee>> map)
{
return map1;
}
static boolean filterEmployee(Employee employee)
{
check employee something and filter out based on some critiea
and return true or false based on that
}
}
в методе getEmployeeByDepartment, для каждой записи на карте отфильтровать сотрудника в списке значений картыс помощью метода filterEmployee, приведенного ниже, и возвращаемое map1 будет содержать карту так, что
<"Sales", list1.add (emp1)> // фильтр empEmployee emp1 возвращает true
<"Sales", list1.add (emp2)> // фильтр empEmployee emp2 возвращает true
<"Tech", list2.add (emp5)> // filterEmployee emp5 возвращает true
<"Tech", list2.add(emp6)> // empE filterEmployee возвращает true
Я пробовал то и то же, что и ниже, но не сработало
Map<Department, List<Employee>> map2 = map.entrySet().stream().filter(entry -> entry.getValue().stream().filter(Test::filterEmployee).collect(Collectors.toMap((Department)entry.getKey(), (List<Employee>)entry.getValue())));