Я хочу сгруппировать коллекцию, но я не хочу, чтобы агрегации включали некоторые значения. Какое лучшее решение для этого?Java8, есть ли сборщик фильтров?
Решение может быть сборщиком filtering(Predicate,Collector)
, но такого коллекционера нет. Есть ли способ сделать это, не используя свой собственный коллекционер?
IntStream.range(0,100).collect(
groupingBy(
i -> i % 3,
HashMap::new,
filtering(i -> i % 2 == 0, toSet())
)
);
функция фильтрации должна принимать 2 аргумента, исправлена. Результатом является тип «Map>». Я хочу, чтобы наборы содержали только элементы, удовлетворяющие предикату 'i -> i% 2 == 0'. Я не могу отфильтровать коллекцию перед группировкой, потому что тогда результат не будет содержать некоторые группы (в общем случае). –
Тогда я думаю, что вы в значительной степени опустили свой собственный коллекционер, как я описал. –