package vc.thinker.utils; import com.google.common.collect.Lists; import com.google.common.collect.Maps; import org.springframework.lang.Nullable; import java.util.List; import java.util.Map; import java.util.function.Function; /** * 枚举解析器 解析出多个枚举 * * @author HeTongHao * @since 2021/6/17 16:34 */ public class ResolveMultipart<T, K> { private final Map<K, List<T>> keyValueMap = Maps.newHashMap(); /** * 构造 * * @param values 枚举数组 * @param resolveKey 根据那个字段解析 */ public ResolveMultipart(T[] values, Function<T, K> resolveKey) { for (T value : values) { keyValueMap.computeIfAbsent(resolveKey.apply(value), k -> Lists.newLinkedList()).add(value); } } public ResolveMultipart(List<T> values, Function<T, K> resolveKey) { for (T value : values) { keyValueMap.computeIfAbsent(resolveKey.apply(value), k -> Lists.newLinkedList()).add(value); } } @Nullable public List<T> resolve(K key) { return keyValueMap.get(key); } }