mirror of
https://gitee.com/chinabugotech/hutool.git
synced 2025-05-09 23:51:34 +08:00
add of
This commit is contained in:
parent
594c181367
commit
a4e30936fb
@ -14,8 +14,9 @@
|
|||||||
* 【core 】 增加PathUtil和FileNameUtil,分离FileUtil中部分方法
|
* 【core 】 增加PathUtil和FileNameUtil,分离FileUtil中部分方法
|
||||||
* 【core 】 改造IndexedComparator,增加InstanceComparator
|
* 【core 】 改造IndexedComparator,增加InstanceComparator
|
||||||
* 【extra 】 增加CglibUtil
|
* 【extra 】 增加CglibUtil
|
||||||
* 【extra 】 增加Ipv4Util(pr#161@Gitee)
|
* 【core 】 增加Ipv4Util(pr#161@Gitee)
|
||||||
* 【extra 】 增加CalendarUtil和DateUtil增加isSameMonth方法(pr#161@Gitee)
|
* 【core 】 增加CalendarUtil和DateUtil增加isSameMonth方法(pr#161@Gitee)
|
||||||
|
* 【core 】 Dict增加of方法(issue#1035@Github)
|
||||||
|
|
||||||
### Bug修复#
|
### Bug修复#
|
||||||
* 【poi 】 修复ExcelBase.isXlsx方法判断问题(issue#I1S502@Gitee)
|
* 【poi 】 修复ExcelBase.isXlsx方法判断问题(issue#I1S502@Gitee)
|
||||||
|
@ -19,7 +19,6 @@ import java.util.Map;
|
|||||||
* 字典对象,扩充了HashMap中的方法
|
* 字典对象,扩充了HashMap中的方法
|
||||||
*
|
*
|
||||||
* @author loolly
|
* @author loolly
|
||||||
*
|
|
||||||
*/
|
*/
|
||||||
public class Dict extends LinkedHashMap<String, Object> implements BasicTypeGetter<String> {
|
public class Dict extends LinkedHashMap<String, Object> implements BasicTypeGetter<String> {
|
||||||
private static final long serialVersionUID = 6135423866861206530L;
|
private static final long serialVersionUID = 6135423866861206530L;
|
||||||
@ -27,10 +26,13 @@ public class Dict extends LinkedHashMap<String, Object> implements BasicTypeGett
|
|||||||
static final float DEFAULT_LOAD_FACTOR = 0.75f;
|
static final float DEFAULT_LOAD_FACTOR = 0.75f;
|
||||||
static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; // aka 16
|
static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; // aka 16
|
||||||
|
|
||||||
/** 是否大小写不敏感 */
|
/**
|
||||||
|
* 是否大小写不敏感
|
||||||
|
*/
|
||||||
private boolean caseInsensitive;
|
private boolean caseInsensitive;
|
||||||
|
|
||||||
// --------------------------------------------------------------- Static method start
|
// --------------------------------------------------------------- Static method start
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 创建Dict
|
* 创建Dict
|
||||||
*
|
*
|
||||||
@ -43,16 +45,66 @@ public class Dict extends LinkedHashMap<String, Object> implements BasicTypeGett
|
|||||||
/**
|
/**
|
||||||
* 将PO对象转为Dict
|
* 将PO对象转为Dict
|
||||||
*
|
*
|
||||||
* @param <T> Bean类型
|
* @param <T> Bean类型
|
||||||
* @param bean Bean对象
|
* @param bean Bean对象
|
||||||
* @return Vo
|
* @return Vo
|
||||||
*/
|
*/
|
||||||
public static <T> Dict parse(T bean) {
|
public static <T> Dict parse(T bean) {
|
||||||
return create().parseBean(bean);
|
return create().parseBean(bean);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据给定的Pair数组创建Dict对象
|
||||||
|
*
|
||||||
|
* @param pairs 键值对
|
||||||
|
* @return Dict
|
||||||
|
* @since 5.4.1
|
||||||
|
*/
|
||||||
|
@SafeVarargs
|
||||||
|
public static Dict of(Pair<String, Object>... pairs) {
|
||||||
|
final Dict dict = create();
|
||||||
|
for (Pair<String, Object> pair : pairs) {
|
||||||
|
dict.put(pair.getKey(), pair.getValue());
|
||||||
|
}
|
||||||
|
return dict;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据给定的键值对数组创建Dict对象,传入参数必须为key,value,key,value...
|
||||||
|
*
|
||||||
|
* <p>奇数参数必须为key,key最后会转换为String类型。</p>
|
||||||
|
* <p>奇数参数必须为value,可以为任意类型。</p>
|
||||||
|
*
|
||||||
|
* <pre>
|
||||||
|
Dict dict = Dict.of(
|
||||||
|
* "RED", "#FF0000",
|
||||||
|
* "GREEN", "#00FF00",
|
||||||
|
* "BLUE", "#0000FF"
|
||||||
|
* );
|
||||||
|
* </pre>
|
||||||
|
*
|
||||||
|
* @param keysAndValues 键值对列表,必须奇数参数为key,偶数参数为value
|
||||||
|
* @return Dict
|
||||||
|
* @since 5.4.1
|
||||||
|
*/
|
||||||
|
public static Dict of(Object... keysAndValues) {
|
||||||
|
final Dict dict = create();
|
||||||
|
|
||||||
|
String key = null;
|
||||||
|
for(int i = 0; i < keysAndValues.length; i++){
|
||||||
|
if(i % 2 == 0){
|
||||||
|
dict.put(key, keysAndValues[i]);
|
||||||
|
} else{
|
||||||
|
key = Convert.toStr(keysAndValues[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return dict;
|
||||||
|
}
|
||||||
// --------------------------------------------------------------- Static method end
|
// --------------------------------------------------------------- Static method end
|
||||||
|
|
||||||
// --------------------------------------------------------------- Constructor start
|
// --------------------------------------------------------------- Constructor start
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 构造
|
* 构造
|
||||||
*/
|
*/
|
||||||
@ -92,7 +144,7 @@ public class Dict extends LinkedHashMap<String, Object> implements BasicTypeGett
|
|||||||
* 构造
|
* 构造
|
||||||
*
|
*
|
||||||
* @param initialCapacity 初始容量
|
* @param initialCapacity 初始容量
|
||||||
* @param loadFactor 容量增长因子,0~1,即达到容量的百分之多少时扩容
|
* @param loadFactor 容量增长因子,0~1,即达到容量的百分之多少时扩容
|
||||||
*/
|
*/
|
||||||
public Dict(int initialCapacity, float loadFactor) {
|
public Dict(int initialCapacity, float loadFactor) {
|
||||||
this(initialCapacity, loadFactor, false);
|
this(initialCapacity, loadFactor, false);
|
||||||
@ -102,7 +154,7 @@ public class Dict extends LinkedHashMap<String, Object> implements BasicTypeGett
|
|||||||
* 构造
|
* 构造
|
||||||
*
|
*
|
||||||
* @param initialCapacity 初始容量
|
* @param initialCapacity 初始容量
|
||||||
* @param loadFactor 容量增长因子,0~1,即达到容量的百分之多少时扩容
|
* @param loadFactor 容量增长因子,0~1,即达到容量的百分之多少时扩容
|
||||||
* @param caseInsensitive 是否大小写不敏感
|
* @param caseInsensitive 是否大小写不敏感
|
||||||
* @since 4.5.16
|
* @since 4.5.16
|
||||||
*/
|
*/
|
||||||
@ -124,7 +176,7 @@ public class Dict extends LinkedHashMap<String, Object> implements BasicTypeGett
|
|||||||
/**
|
/**
|
||||||
* 转换为Bean对象
|
* 转换为Bean对象
|
||||||
*
|
*
|
||||||
* @param <T> Bean类型
|
* @param <T> Bean类型
|
||||||
* @param bean Bean
|
* @param bean Bean
|
||||||
* @return Bean
|
* @return Bean
|
||||||
*/
|
*/
|
||||||
@ -135,7 +187,7 @@ public class Dict extends LinkedHashMap<String, Object> implements BasicTypeGett
|
|||||||
/**
|
/**
|
||||||
* 转换为Bean对象
|
* 转换为Bean对象
|
||||||
*
|
*
|
||||||
* @param <T> Bean类型
|
* @param <T> Bean类型
|
||||||
* @param bean Bean
|
* @param bean Bean
|
||||||
* @return Bean
|
* @return Bean
|
||||||
* @since 3.3.1
|
* @since 3.3.1
|
||||||
@ -148,8 +200,8 @@ public class Dict extends LinkedHashMap<String, Object> implements BasicTypeGett
|
|||||||
/**
|
/**
|
||||||
* 转换为Bean对象
|
* 转换为Bean对象
|
||||||
*
|
*
|
||||||
* @param <T> Bean类型
|
* @param <T> Bean类型
|
||||||
* @param bean Bean
|
* @param bean Bean
|
||||||
* @param isToCamelCase 是否转换为驼峰模式
|
* @param isToCamelCase 是否转换为驼峰模式
|
||||||
* @return Bean
|
* @return Bean
|
||||||
*/
|
*/
|
||||||
@ -161,7 +213,7 @@ public class Dict extends LinkedHashMap<String, Object> implements BasicTypeGett
|
|||||||
/**
|
/**
|
||||||
* 转换为Bean对象,并使用驼峰法模式转换
|
* 转换为Bean对象,并使用驼峰法模式转换
|
||||||
*
|
*
|
||||||
* @param <T> Bean类型
|
* @param <T> Bean类型
|
||||||
* @param bean Bean
|
* @param bean Bean
|
||||||
* @return Bean
|
* @return Bean
|
||||||
*/
|
*/
|
||||||
@ -173,7 +225,7 @@ public class Dict extends LinkedHashMap<String, Object> implements BasicTypeGett
|
|||||||
/**
|
/**
|
||||||
* 填充Value Object对象
|
* 填充Value Object对象
|
||||||
*
|
*
|
||||||
* @param <T> Bean类型
|
* @param <T> Bean类型
|
||||||
* @param clazz Value Object(或者POJO)的类
|
* @param clazz Value Object(或者POJO)的类
|
||||||
* @return vo
|
* @return vo
|
||||||
*/
|
*/
|
||||||
@ -184,7 +236,7 @@ public class Dict extends LinkedHashMap<String, Object> implements BasicTypeGett
|
|||||||
/**
|
/**
|
||||||
* 填充Value Object对象,忽略大小写
|
* 填充Value Object对象,忽略大小写
|
||||||
*
|
*
|
||||||
* @param <T> Bean类型
|
* @param <T> Bean类型
|
||||||
* @param clazz Value Object(或者POJO)的类
|
* @param clazz Value Object(或者POJO)的类
|
||||||
* @return vo
|
* @return vo
|
||||||
*/
|
*/
|
||||||
@ -196,7 +248,7 @@ public class Dict extends LinkedHashMap<String, Object> implements BasicTypeGett
|
|||||||
* 将值对象转换为Dict<br>
|
* 将值对象转换为Dict<br>
|
||||||
* 类名会被当作表名,小写第一个字母
|
* 类名会被当作表名,小写第一个字母
|
||||||
*
|
*
|
||||||
* @param <T> Bean类型
|
* @param <T> Bean类型
|
||||||
* @param bean 值对象
|
* @param bean 值对象
|
||||||
* @return 自己
|
* @return 自己
|
||||||
*/
|
*/
|
||||||
@ -210,10 +262,10 @@ public class Dict extends LinkedHashMap<String, Object> implements BasicTypeGett
|
|||||||
* 将值对象转换为Dict<br>
|
* 将值对象转换为Dict<br>
|
||||||
* 类名会被当作表名,小写第一个字母
|
* 类名会被当作表名,小写第一个字母
|
||||||
*
|
*
|
||||||
* @param <T> Bean类型
|
* @param <T> Bean类型
|
||||||
* @param bean 值对象
|
* @param bean 值对象
|
||||||
* @param isToUnderlineCase 是否转换为下划线模式
|
* @param isToUnderlineCase 是否转换为下划线模式
|
||||||
* @param ignoreNullValue 是否忽略值为空的字段
|
* @param ignoreNullValue 是否忽略值为空的字段
|
||||||
* @return 自己
|
* @return 自己
|
||||||
*/
|
*/
|
||||||
public <T> Dict parseBean(T bean, boolean isToUnderlineCase, boolean ignoreNullValue) {
|
public <T> Dict parseBean(T bean, boolean isToUnderlineCase, boolean ignoreNullValue) {
|
||||||
@ -226,8 +278,8 @@ public class Dict extends LinkedHashMap<String, Object> implements BasicTypeGett
|
|||||||
* 与给定实体对比并去除相同的部分<br>
|
* 与给定实体对比并去除相同的部分<br>
|
||||||
* 此方法用于在更新操作时避免所有字段被更新,跳过不需要更新的字段 version from 2.0.0
|
* 此方法用于在更新操作时避免所有字段被更新,跳过不需要更新的字段 version from 2.0.0
|
||||||
*
|
*
|
||||||
* @param <T> 字典对象类型
|
* @param <T> 字典对象类型
|
||||||
* @param dict 字典对象
|
* @param dict 字典对象
|
||||||
* @param withoutNames 不需要去除的字段名
|
* @param withoutNames 不需要去除的字段名
|
||||||
*/
|
*/
|
||||||
public <T extends Dict> void removeEqual(T dict, String... withoutNames) {
|
public <T extends Dict> void removeEqual(T dict, String... withoutNames) {
|
||||||
@ -263,10 +315,11 @@ public class Dict extends LinkedHashMap<String, Object> implements BasicTypeGett
|
|||||||
}
|
}
|
||||||
|
|
||||||
// -------------------------------------------------------------------- Set start
|
// -------------------------------------------------------------------- Set start
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 设置列
|
* 设置列
|
||||||
*
|
*
|
||||||
* @param attr 属性
|
* @param attr 属性
|
||||||
* @param value 值
|
* @param value 值
|
||||||
* @return 本身
|
* @return 本身
|
||||||
*/
|
*/
|
||||||
@ -278,7 +331,7 @@ public class Dict extends LinkedHashMap<String, Object> implements BasicTypeGett
|
|||||||
/**
|
/**
|
||||||
* 设置列,当键或值为null时忽略
|
* 设置列,当键或值为null时忽略
|
||||||
*
|
*
|
||||||
* @param attr 属性
|
* @param attr 属性
|
||||||
* @param value 值
|
* @param value 值
|
||||||
* @return 本身
|
* @return 本身
|
||||||
*/
|
*/
|
||||||
@ -300,7 +353,7 @@ public class Dict extends LinkedHashMap<String, Object> implements BasicTypeGett
|
|||||||
/**
|
/**
|
||||||
* 获得特定类型值
|
* 获得特定类型值
|
||||||
*
|
*
|
||||||
* @param <T> 值类型
|
* @param <T> 值类型
|
||||||
* @param attr 字段名
|
* @param attr 字段名
|
||||||
* @return 字段值
|
* @return 字段值
|
||||||
* @since 4.6.3
|
* @since 4.6.3
|
||||||
@ -312,8 +365,8 @@ public class Dict extends LinkedHashMap<String, Object> implements BasicTypeGett
|
|||||||
/**
|
/**
|
||||||
* 获得特定类型值
|
* 获得特定类型值
|
||||||
*
|
*
|
||||||
* @param <T> 值类型
|
* @param <T> 值类型
|
||||||
* @param attr 字段名
|
* @param attr 字段名
|
||||||
* @param defaultValue 默认值
|
* @param defaultValue 默认值
|
||||||
* @return 字段值
|
* @return 字段值
|
||||||
*/
|
*/
|
||||||
@ -455,7 +508,7 @@ public class Dict extends LinkedHashMap<String, Object> implements BasicTypeGett
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Object get(Object key) {
|
public Object get(Object key) {
|
||||||
return super.get(customKey((String)key));
|
return super.get(customKey((String) key));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -289,7 +289,11 @@ public class MapUtil {
|
|||||||
* </pre>
|
* </pre>
|
||||||
*
|
*
|
||||||
* <pre>
|
* <pre>
|
||||||
* Map<Object, Object> colorMap = MapUtil.of(new String[][] { { "RED", "#FF0000" }, { "GREEN", "#00FF00" }, { "BLUE", "#0000FF" } });
|
* Map<Object, Object> colorMap = MapUtil.of(new String[][] {
|
||||||
|
* { "RED", "#FF0000" },
|
||||||
|
* { "GREEN", "#00FF00" },
|
||||||
|
* { "BLUE", "#0000FF" }
|
||||||
|
* });
|
||||||
* </pre>
|
* </pre>
|
||||||
* <p>
|
* <p>
|
||||||
* 参考:commons-lang
|
* 参考:commons-lang
|
||||||
@ -305,7 +309,7 @@ public class MapUtil {
|
|||||||
}
|
}
|
||||||
final HashMap<Object, Object> map = new HashMap<>((int) (array.length * 1.5));
|
final HashMap<Object, Object> map = new HashMap<>((int) (array.length * 1.5));
|
||||||
for (int i = 0; i < array.length; i++) {
|
for (int i = 0; i < array.length; i++) {
|
||||||
Object object = array[i];
|
final Object object = array[i];
|
||||||
if (object instanceof Map.Entry) {
|
if (object instanceof Map.Entry) {
|
||||||
Map.Entry entry = (Map.Entry) object;
|
Map.Entry entry = (Map.Entry) object;
|
||||||
map.put(entry.getKey(), entry.getValue());
|
map.put(entry.getKey(), entry.getValue());
|
||||||
@ -315,7 +319,7 @@ public class MapUtil {
|
|||||||
map.put(entry[0], entry[1]);
|
map.put(entry[0], entry[1]);
|
||||||
}
|
}
|
||||||
} else if (object instanceof Iterable) {
|
} else if (object instanceof Iterable) {
|
||||||
Iterator iter = ((Iterable) object).iterator();
|
final Iterator iter = ((Iterable) object).iterator();
|
||||||
if (iter.hasNext()) {
|
if (iter.hasNext()) {
|
||||||
final Object key = iter.next();
|
final Object key = iter.next();
|
||||||
if (iter.hasNext()) {
|
if (iter.hasNext()) {
|
||||||
@ -324,7 +328,7 @@ public class MapUtil {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (object instanceof Iterator) {
|
} else if (object instanceof Iterator) {
|
||||||
Iterator iter = ((Iterator) object);
|
final Iterator iter = ((Iterator) object);
|
||||||
if (iter.hasNext()) {
|
if (iter.hasNext()) {
|
||||||
final Object key = iter.next();
|
final Object key = iter.next();
|
||||||
if (iter.hasNext()) {
|
if (iter.hasNext()) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user