То, что вы, похоже, ищете, это условное groupingBy
как:
Map<String, List<LeadChannel>> finalMap = groups
.stream()
.collect(Collectors.groupingBy(channel ->
channel.getResolution().getId().equals(RESOLVED_STATUS) ?
"unresolved" : "resolved"));
Или в нескольких конвейерах, чтобы понять, как вы можете разделить данные, а затем отобразить их далее на основе общего условияв вопросе:
Map<Boolean, List<LeadChannel>> mappedUp = groups
.stream()
.collect(Collectors.partitioningBy(channel ->
channel.getResolution().getId().equals(RESOLVED_STATUS)));
Map<String, List<LeadChannel>> finalMap = mappedUp.entrySet().stream()
// in a similar manner you can map your current map's entries as well
.map(e -> new AbstractMap.SimpleEntry<>(e.getKey() ? "resolved" : "unresolved", e.getValue()))
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
или, как предположил Хольгер, лучше с использованием лямбды напрямую собрать как
Map<String, List<LeadChannel>> finalMap = mappedUp.entrySet().stream()
.collect(Collectors.toMap(e -> e.getKey()? "resolved": "unresolved", Map.Entry::getValue))