| 123456789101112131415161718192021222324 |
- package org.leumasjaffe.recipe.util;
- import java.util.Collection;
- import java.util.HashMap;
- import java.util.Map;
- import java.util.function.BinaryOperator;
- import java.util.function.Function;
- import java.util.stream.Stream;
- import lombok.experimental.UtilityClass;
- @UtilityClass
- public class Collator {
- public <T> Collection<T> collateBy(final Stream<T> stream, final Function<T, String> getKey,
- final BinaryOperator<T> folder) {
- final Map<String, T> map = new HashMap<>();
- stream.forEach(value -> {
- final String key = getKey.apply(value);
- map.computeIfPresent(key, (k, v) -> folder.apply(v, value));
- map.computeIfAbsent(key, k -> value);
- });
- return map.values();
- }
- }
|