package com.chinaweal.aiccs.common.util;


import java.util.HashMap;
import java.util.Map;

/**
 * 创建信息
 * @author <a href="https://blog.lroyia.top">lroyia</a>
 * @since 2021/3/25 10:35
 **/
public class MapUtils extends org.apache.commons.collections.MapUtils {

    /**
     * 创建MapBuilder
     * @param key   初始key
     * @param value 初始value
     * @param <K> key类型
     * @param <V> value类型
     * @return  创建器
     * @author  lroyia
     * @since 2021年3月25日 13:49:23
     */
    public static <K, V> MapBuilder<K, V> buildMap(K key, V value){
        return new MapBuilder<>(key, value);
    }

    /**
     * 创建空MapBuilder
     * @param <K>   key类型
     * @param <V>   value类型
     * @return  创建结果
     * @author lroyia
     * @since 2021年3月25日 13:49:21
     */
    public static <K, V> MapBuilder<K, V> buildMap(){
        return new MapBuilder<K, V>();
    }

    /**
     * Map构建器
     */
    public static class MapBuilder<K, V>{

        /**
         * 实际Map
         */
        private final Map<K, V> paramMap = new HashMap<>();

        MapBuilder(){

        }

        MapBuilder(K key, V value){
            paramMap.put(key, value);
        }

        /**
         * 添加参数
         * @param key   参数key
         * @param value 参数值
         * @return  返回构建器
         * @author  lroyia
         * @since   2021年3月25日 10:34:46
         */
        public MapBuilder<K, V> add(K key, V value){
            paramMap.put(key, value);
            return this;
        }

        /**
         * 构建参数信息
         * @return  参数信息
         * @author  lroyia
         * @since   2021年3月25日 10:33:30
         */
        public Map<K, V> build(){
            return paramMap;
        }
    }
}
