Похоже, что после того, как вы получаете, выдается Entry<String,Map<String,Employee>>
, если есть какой-либо сотрудник, у которого пол "M", затем отфильтруйте внутренний Map<String,Employee>
, чтобы он содержал только записи с полом "M".
, в этом случае вы можете filter
вместе с anyMatch
для первого критерия.Далее, на этапе сбора вы можете применить фильтрацию к внутренней карте:
tempCollection.entrySet().stream()
.filter(i -> i.getValue().values().stream().anyMatch(e -> "M".equals(e.getGender())))
.collect(toMap(Map.Entry::getKey,
v -> v.getValue().entrySet().stream()
.filter(i -> "M".equals(i.getValue().getGender()))
.collect(toMap(Map.Entry::getKey, Map.Entry::getValue))));