У меня есть фрагмент кода, который функционально работает так, как я хочу:
private Map<Florist, EnumSet<Flower>> localMethod(List<FlowerSellers> branchList) {
Map<Florist, EnumSet<Flower>> availableFlowers = new EnumMap<>(Florist.class);
branchList.stream()
.filter(f -> f instanceof FlorestFranchised)
.forEach(f -> availableFlowers.put(
FlorestHelperClass.florestTypeForKey(f.id()),
((FlorestFranchised) f).getFlowers()));
return availableFlowers;
}
В качестве аргумента метод вспомогательного класса:
public static Florist FlorestTypeForKey(String id) {
return FLOREST_MAP.get(id);
}
Я бы хотел чтобы сделать это с помощью сборщика, поэтому я хотел сделать это ...
return branchList.stream()
.filter(p -> p instanceof FlorestFranchised)
.map(p -> (FlorestFranchised) p)
.collect(Collectors.toMap(
FlorestFranchised::getId,
FlorestFranchised::getFlowers));
Но, очевидно, это не удается, потому что он не выполняет поиск вспомогательного класса и поэтому вместо того, чтобы возвращать карту он возвращается
Это не удается:
return branchList.stream()
.filter(p -> p instanceof FlorestFranchised)
.map(p -> (FlorestFranchised) p)
.collect(Collectors.toMap(
FlorestHelperClass.florestTypeForKey(FlorestFranchised::getId),
FlorestFranchised::getFlowers));
Может ли кто-нибудь сказать мне, как мне вызывать методы поиска (FlorestHelperClass.florestTypeForKey)
в сборщике? Возможно ли это?