package cn.iocoder.dashboard.util.collection; import cn.hutool.core.collection.CollectionUtil; import java.util.*; import java.util.function.Function; import java.util.function.Predicate; import java.util.stream.Collectors; /** * Collection 工具类 * * @author 芋道源码 */ public class CollectionUtils { public static Set asSet(T... objs) { return new HashSet<>(Arrays.asList(objs)); } public static List filterList(Collection from, Predicate predicate) { return from.stream().filter(predicate).collect(Collectors.toList()); } public static List convertList(List from, Function func) { return from.stream().map(func).collect(Collectors.toList()); } public static Set convertSet(List from, Function func) { return from.stream().map(func).collect(Collectors.toSet()); } public static Map convertMap(List from, Function keyFunc) { return from.stream().collect(Collectors.toMap(keyFunc, item -> item)); } public static Map convertMap(List from, Function keyFunc, Function valueFunc) { return from.stream().collect(Collectors.toMap(keyFunc, valueFunc)); } public static Map> convertMultiMap(List from, Function keyFunc) { return from.stream().collect(Collectors.groupingBy(keyFunc, Collectors.mapping(t -> t, Collectors.toList()))); } public static Map> convertMultiMap(List from, Function keyFunc, Function valueFunc) { return from.stream().collect(Collectors.groupingBy(keyFunc, Collectors.mapping(valueFunc, Collectors.toList()))); } // 暂时没想好名字,先以 2 结尾噶 public static Map> convertMultiMap2(List from, Function keyFunc, Function valueFunc) { return from.stream().collect(Collectors.groupingBy(keyFunc, Collectors.mapping(valueFunc, Collectors.toSet()))); } public static boolean containsAny(Collection source, Collection candidates) { return org.springframework.util.CollectionUtils.containsAny(source, candidates); } public static T getFirst(List from) { return !CollectionUtil.isEmpty(from) ? from.get(0) : null; } public static void addIfNotNull(Collection coll, T item) { if (item == null) { return; } coll.add(item); } }