package com.iailab.framework.common.util.collection; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.util.ObjUtil; import com.iailab.framework.common.core.KeyValue; import com.google.common.collect.Maps; import com.google.common.collect.Multimap; import java.util.ArrayList; import java.util.Collection; import java.util.List; import java.util.Map; import java.util.function.Consumer; /** * Map 工具类 * * @author iailab */ public class MapUtils { /** * 从哈希表表ä¸ï¼ŒèŽ·å¾— keys 对应的所有 value 数组 * * @param multimap 哈希表 * @param keys keys * @return value 数组 */ public static <K, V> List<V> getList(Multimap<K, V> multimap, Collection<K> keys) { List<V> result = new ArrayList<>(); keys.forEach(k -> { Collection<V> values = multimap.get(k); if (CollectionUtil.isEmpty(values)) { return; } result.addAll(values); }); return result; } /** * 从哈希表查找到 key 对应的 value,然åŽè¿›ä¸€æ¥å¤„ç† * key 为 null æ—¶, ä¸å¤„ç† * 注æ„,如果查找到的 value 为 null 时,ä¸è¿›è¡Œå¤„ç† * * @param map 哈希表 * @param key key * @param consumer 进一æ¥å¤„ç†çš„逻辑 */ public static <K, V> void findAndThen(Map<K, V> map, K key, Consumer<V> consumer) { if (ObjUtil.isNull(key) || CollUtil.isEmpty(map)) { return; } V value = map.get(key); if (value == null) { return; } consumer.accept(value); } public static <K, V> Map<K, V> convertMap(List<KeyValue<K, V>> keyValues) { Map<K, V> map = Maps.newLinkedHashMapWithExpectedSize(keyValues.size()); keyValues.forEach(keyValue -> map.put(keyValue.getKey(), keyValue.getValue())); return map; } }