Class Dictionary

All Implemented Interfaces:
Serializable, Cloneable, Iterable<Map.Entry<String,Object>>, Map<String,Object>, TypeGetter<String>, Wrapper<Map<String,Object>>

public class Dictionary extends CustomKeyMap<String,Object> implements TypeGetter<String>
字典对象,扩充了LinkedHashMap中的方法
Since:
Java 17+
Author:
Kimi Liu
See Also:
  • Constructor Details

    • Dictionary

      public Dictionary()
      构造
    • Dictionary

      public Dictionary(boolean caseInsensitive)
      构造
      Parameters:
      caseInsensitive - 是否大小写不敏感
    • Dictionary

      public Dictionary(int initialCapacity)
      构造
      Parameters:
      initialCapacity - 初始容量
    • Dictionary

      public Dictionary(int initialCapacity, boolean caseInsensitive)
      构造
      Parameters:
      initialCapacity - 初始容量
      caseInsensitive - 是否大小写不敏感
    • Dictionary

      public Dictionary(int initialCapacity, float loadFactor)
      构造
      Parameters:
      initialCapacity - 初始容量
      loadFactor - 容量增长因子,0~1,即达到容量的百分之多少时扩容
    • Dictionary

      public Dictionary(int initialCapacity, float loadFactor, boolean caseInsensitive)
      构造
      Parameters:
      initialCapacity - 初始容量
      loadFactor - 容量增长因子,0~1,即达到容量的百分之多少时扩容
      caseInsensitive - 是否大小写不敏感
    • Dictionary

      public Dictionary(Map<String,Object> m)
      构造
      Parameters:
      m - Map
  • Method Details

    • of

      public static Dictionary of()
      创建Dict
      Returns:
      Dictionary
    • parse

      public static <T> Dictionary parse(T bean)
      将PO对象转为Dict
      Type Parameters:
      T - Bean类型
      Parameters:
      bean - Bean对象
      Returns:
      Vo
    • ofEntries

      @SafeVarargs public static Dictionary ofEntries(Map.Entry<String,Object>... pairs)
      根据给定的Entry数组创建Dict对象
      Parameters:
      pairs - 键值对
      Returns:
      Dictionary
    • ofKvs

      public static Dictionary ofKvs(Object... keysAndValues)
      根据给定的键值对数组创建Dict对象,传入参数必须为key,value,data,value...

      奇数参数必须为key,key最后会转换为String类型。

      偶数参数必须为value,可以为任意类型。

       Dictionary dict = Dictionary.of(
              "RED", "#FF0000",
              "GREEN", "#00FF00",
              "BLUE", "#0000FF"
       );
       
      Parameters:
      keysAndValues - 键值对列表,必须奇数参数为key,偶数参数为value
      Returns:
      Dictionary
    • toBean

      public <T> T toBean(T bean)
      转换为Bean对象
      Type Parameters:
      T - Bean类型
      Parameters:
      bean - Bean
      Returns:
      Bean
    • toBeanIgnoreCase

      public <T> T toBeanIgnoreCase(T bean)
      转换为Bean对象
      Type Parameters:
      T - Bean类型
      Parameters:
      bean - Bean
      Returns:
      Bean
    • toBean

      public <T> T toBean(Class<T> clazz)
      填充Value Object对象
      Type Parameters:
      T - Bean类型
      Parameters:
      clazz - Value Object(或者POJO)的类
      Returns:
      vo
    • toBeanIgnoreCase

      public <T> T toBeanIgnoreCase(Class<T> clazz)
      填充Value Object对象,忽略大小写
      Type Parameters:
      T - Bean类型
      Parameters:
      clazz - Value Object(或者POJO)的类
      Returns:
      vo
    • parseBean

      public <T> Dictionary parseBean(T bean)
      将值对象转换为Dict 类名会被当作表名,小写第一个字母
      Type Parameters:
      T - Bean类型
      Parameters:
      bean - 值对象
      Returns:
      自己
    • parseBean

      public <T> Dictionary parseBean(T bean, boolean isToUnderlineCase, boolean ignoreNullValue)
      将值对象转换为Dict 类名会被当作表名,小写第一个字母
      Type Parameters:
      T - Bean类型
      Parameters:
      bean - 值对象
      isToUnderlineCase - 是否转换为下划线模式
      ignoreNullValue - 是否忽略值为空的字段
      Returns:
      自己
    • removeEqual

      public <T extends Dictionary> void removeEqual(T dict, String... withoutNames)
      与给定实体对比并去除相同的部分 此方法用于在更新操作时避免所有字段被更新,跳过不需要更新的字段 version from 2.0.0
      Type Parameters:
      T - 字典对象类型
      Parameters:
      dict - 字典对象
      withoutNames - 不需要去除的字段名
    • filterNew

      public Dictionary filterNew(String... keys)
      过滤Map保留指定键值对,如果键不存在跳过
      Parameters:
      keys - 键列表
      Returns:
      Dictionary 结果
    • removeNew

      public Dictionary removeNew(String... keys)
      过滤Map去除指定键值对,如果键不存在跳过
      Parameters:
      keys - 键列表
      Returns:
      Dictionary 结果
    • set

      public Dictionary set(String attr, Object value)
      设置列
      Parameters:
      attr - 属性
      value - 值
      Returns:
      本身
    • setIgnoreNull

      public Dictionary setIgnoreNull(String attr, Object value)
      设置列,当键或值为null时忽略
      Parameters:
      attr - 属性
      value - 值
      Returns:
      本身
    • getObject

      public Object getObject(String key, Object defaultValue)
      Description copied from interface: TypeGetter
      获取Object属性值
      Specified by:
      getObject in interface TypeGetter<String>
      Parameters:
      key - 属性名
      defaultValue - 默认值
      Returns:
      属性值,无对应值返回defaultValue
    • get

      public <P, T> T get(FunctionX<P,T> func)
      根据lambda的方法引用,获取
      Type Parameters:
      P - 参数类型
      T - 返回值类型
      Parameters:
      func - 方法引用
      Returns:
      获取表达式对应属性和返回的对象
    • getBean

      public <T> T getBean(String attr)
      获得特定类型值
      Type Parameters:
      T - 值类型
      Parameters:
      attr - 字段名
      Returns:
      字段值
    • getByPath

      public <T> T getByPath(String expression)
      通过表达式获取JSON中嵌套的对象
      1. .表达式,可以获取Bean对象中的属性(字段)值或者Map中key对应的值
      2. []表达式,可以获取集合等对象中对应index的值
      Type Parameters:
      T - 目标类型
      Parameters:
      expression - 表达式
      Returns:
      对象
      See Also:
    • getByPath

      public <T> T getByPath(String expression, Type resultType)
      通过表达式获取JSON中嵌套的对象
      1. .表达式,可以获取Bean对象中的属性(字段)值或者Map中key对应的值
      2. []表达式,可以获取集合等对象中对应index的值
      获取表达式对应值后转换为对应类型的值
      Type Parameters:
      T - 返回值类型
      Parameters:
      expression - 表达式
      resultType - 返回值类型
      Returns:
      对象
      See Also:
    • clone

      public Dictionary clone()
      Overrides:
      clone in class MapWrapper<String,Object>
    • customKey

      protected String customKey(Object key)
      Description copied from class: TransMap
      自定义键
      Specified by:
      customKey in class TransMap<String,Object>
      Parameters:
      key - KEY
      Returns:
      自定义KEY
    • setFields

      public Dictionary setFields(SupplierX<?>... fields)
      通过lambda批量设置值 实际使用时,可以使用getXXX的方法引用来完成键值对的赋值:
           User user = GenericBuilder.of(User::new).with(User::setUsername, "name").build();
           Dictionary.create().setFields(user::getNickname, user::getUsername);
       
      Parameters:
      fields - lambda,不能为空
      Returns:
      this