dongyukun
8 天以前 a23e66f179586eeffc55d116f5a3bb53eab9cb09
提交 | 用户 | 时间
e7c126 1 package com.iailab.framework.common.util.collection;
H 2
3 import cn.hutool.core.collection.CollUtil;
4 import cn.hutool.core.collection.CollectionUtil;
5 import cn.hutool.core.util.ObjUtil;
6 import com.iailab.framework.common.core.KeyValue;
7 import com.google.common.collect.Maps;
8 import com.google.common.collect.Multimap;
9
10 import java.util.ArrayList;
11 import java.util.Collection;
12 import java.util.List;
13 import java.util.Map;
14 import java.util.function.Consumer;
15
16 /**
17  * Map 工具类
18  *
19  * @author iailab
20  */
21 public class MapUtils {
22
23     /**
24      * 从哈希表表中,获得 keys 对应的所有 value 数组
25      *
26      * @param multimap 哈希表
27      * @param keys keys
28      * @return value 数组
29      */
30     public static <K, V> List<V> getList(Multimap<K, V> multimap, Collection<K> keys) {
31         List<V> result = new ArrayList<>();
32         keys.forEach(k -> {
33             Collection<V> values = multimap.get(k);
34             if (CollectionUtil.isEmpty(values)) {
35                 return;
36             }
37             result.addAll(values);
38         });
39         return result;
40     }
41
42     /**
43      * 从哈希表查找到 key 对应的 value,然后进一步处理
44      * key 为 null 时, 不处理
45      * 注意,如果查找到的 value 为 null 时,不进行处理
46      *
47      * @param map 哈希表
48      * @param key key
49      * @param consumer 进一步处理的逻辑
50      */
51     public static <K, V> void findAndThen(Map<K, V> map, K key, Consumer<V> consumer) {
52         if (ObjUtil.isNull(key) || CollUtil.isEmpty(map)) {
53             return;
54         }
55         V value = map.get(key);
56         if (value == null) {
57             return;
58         }
59         consumer.accept(value);
60     }
61
62     public static <K, V> Map<K, V> convertMap(List<KeyValue<K, V>> keyValues) {
63         Map<K, V> map = Maps.newLinkedHashMapWithExpectedSize(keyValues.size());
64         keyValues.forEach(keyValue -> map.put(keyValue.getKey(), keyValue.getValue()));
65         return map;
66     }
67
68 }