Such scenarios are well supported by my free StreamEx library which enhances standard Stream API:
Map> map = StreamEx.of(list) // create an enhanced stream of Item
// create a stream of Entry-
.cross(item -> item.getOwners().stream().map(Person::getManager))
// swap keys and values to get stream of Entry
.invert()
.grouping();
Internally it's similar to @Holger solution.