C
Каждая реализация интерфейса говорит, какие значения енума поддерживает (Set<енум>).
Возможно в 1 цикл (стрим) собрать Map<енум, реализация_интерфейса>? У меня получается только в 2 цикла.
Код ниже или запускаемый по ссылке: https://ideone.com/vW2Jer
A - enum, B - interface
Map<A, B> map = Arrays.stream(A.values())
.collect(toMap(Function.identity()
, a -> setOfB.stream()
.filter(b -> b.getSetOfA().contains(a))
.findAny()
.orElseThrow(...)
));

