Если я правильно вас понимаю, вот решение: предположим, у нас есть эти данные:
Map<String, List<Integer>> map = new HashMap<>();
map.put("Noo", new ArrayList<>(Arrays.asList(8,8,9)));
map.put("No", new ArrayList<>(Arrays.asList(1,8,9)));
map.put("Aoo", new ArrayList<>(Arrays.asList(8,8,9)));
Мы можем отфильтровать данные следующим образом:
map.entrySet().
stream()
.filter(e -> e.getKey().startsWith("N"))
.filter(e -> e.getValue().stream().filter(id -> id <= 7).findAny().orElse(0) == 0)
.map(Map.Entry::getKey)
.collect(Collectors.toSet());
Первый фильтр исключаетИмена, которые не начинаются с "N"
, второй фильтр проходит через оставшиеся записи и проверяет, все ли ids
больше 7. В foreach я просто печатаю данные, но вы можете изменить логику в соответствии с вашими потребностями
Результат должен выглядеть так:
Noo [8, 8, 9]