Если вы искали все компании, которым дано color
их logo
, вы должны сгруппировать как:
Map<Integer, List<Company>> collect = company.stream()
.collect(Collectors.groupingBy(e -> e.getLogo().getColor()));
На всякий случай, просто подсчет таких значений матовым, вы должны затем используйте Collectors.counting
, например:
Map<Integer, Long> count = company.stream()
.collect(Collectors.groupingBy(e -> e.getLogo().getColor(),
Collectors.counting()));
Короче, не map
поток, если вы хотите, чтобы значения имели тип Company
.
Редактировать : Исходя из комментариев, если идея состоит в том, чтобы преобразовать Company
в name
, вы можете отобразить его после группировки. Использование Collectors.mapping
, например:
Map<Integer, List<String>> collect = company.stream()
.collect(Collectors.groupingBy(e -> e.getLogo().getColor(),
Collectors.mapping(Company::getName, Collectors.toList())));