MapUtils.java 1.8 KB

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