Вы должны переопределить equal()
и hashCode()
в Supplier
классе для группировки.
Map<Supplier, List<Shop>> result = shops.stream()
.flatMap(s -> s.getSuppliers().stream()
.map(sup -> new SimpleEntry<>(sup, s))
.collect(groupingBy(Entry::getKey, // This step requires Supplier equal function
mapping(Entry::getValue, toList())));
Если вы не можете изменить класс Supplier
для поддержки equal()
, вы должны создать карту Supplier
Редактировать
Как указывал @jorn vernee, мы можем использовать flatMap
напрямую, без предварительной записи в список. Это огромный импульс