1. import java.util.HashMap;
    2. import java.util.Map;
    3. import lombok.extern.slf4j.Slf4j;
    4. /**
    5. * @author zhouzhenyong
    6. * @since 2018/12/22 下午10:16
    7. */
    8. @Slf4j
    9. public final class Maps<K, V> {
    10. private static final Integer KV_NUM = 2;
    11. private Maps() {}
    12. private Map<K, V> dataMap = new HashMap<>();
    13. /**
    14. * key-value-key-value...这种格式初始化map
    15. *
    16. * @param kvs key-value-key-value这种kv入参
    17. * @return 构造的Maps结构
    18. */
    19. @SuppressWarnings({"rawtypes", "unchecked"})
    20. public static Maps of(Object... kvs) {
    21. if (kvs.length % KV_NUM != 0) {
    22. log.error("Maps.of的参数需要是key-value-key-value...这种格式");
    23. return new Maps();
    24. }
    25. Maps maps = new Maps();
    26. for (int i = 0; i < kvs.length; i += KV_NUM) {
    27. if (null == kvs[i]) {
    28. log.error("map的key不可以为null");
    29. return maps;
    30. }
    31. maps.put(kvs[i], kvs[i + 1]);
    32. }
    33. return maps;
    34. }
    35. public Maps<K, V> put(Map<K, V> map) {
    36. dataMap.putAll(map);
    37. return this;
    38. }
    39. public Maps<K, V> put(K key, V value) {
    40. dataMap.put(key, value);
    41. return this;
    42. }
    43. public Maps<K, V> add(Map<K, V> map) {
    44. dataMap.putAll(map);
    45. return this;
    46. }
    47. public Maps<K, V> add(K key, V value) {
    48. dataMap.put(key, value);
    49. return this;
    50. }
    51. public Map<K, V> build() {
    52. return dataMap;
    53. }
    54. }