diff --git a/hutool-core/src/main/java/cn/hutool/core/map/CamelCaseLinkedMap.java b/hutool-core/src/main/java/cn/hutool/core/map/CamelCaseLinkedMap.java
index 6568098f6..fbd2b776c 100644
--- a/hutool-core/src/main/java/cn/hutool/core/map/CamelCaseLinkedMap.java
+++ b/hutool-core/src/main/java/cn/hutool/core/map/CamelCaseLinkedMap.java
@@ -1,19 +1,21 @@
package cn.hutool.core.map;
+import cn.hutool.core.util.StrUtil;
+
import java.util.LinkedHashMap;
import java.util.Map;
/**
* 驼峰Key风格的LinkedHashMap
* 对KEY转换为驼峰,get("int_value")和get("intValue")获得的值相同,put进入的值也会被覆盖
- *
+ *
* @author Looly
*
* @param 键类型
* @param 值类型
* @since 4.0.7
*/
-public class CamelCaseLinkedMap extends CamelCaseMap {
+public class CamelCaseLinkedMap extends CustomKeyMap {
private static final long serialVersionUID = 4043263744224569870L;
// ------------------------------------------------------------------------- Constructor start
@@ -26,7 +28,7 @@ public class CamelCaseLinkedMap extends CamelCaseMap {
/**
* 构造
- *
+ *
* @param initialCapacity 初始大小
*/
public CamelCaseLinkedMap(int initialCapacity) {
@@ -35,7 +37,7 @@ public class CamelCaseLinkedMap extends CamelCaseMap {
/**
* 构造
- *
+ *
* @param m Map
*/
public CamelCaseLinkedMap(Map extends K, ? extends V> m) {
@@ -44,7 +46,7 @@ public class CamelCaseLinkedMap extends CamelCaseMap {
/**
* 构造
- *
+ *
* @param loadFactor 加载因子
* @param m Map
*/
@@ -55,7 +57,7 @@ public class CamelCaseLinkedMap extends CamelCaseMap {
/**
* 构造
- *
+ *
* @param initialCapacity 初始大小
* @param loadFactor 加载因子
*/
@@ -63,4 +65,18 @@ public class CamelCaseLinkedMap extends CamelCaseMap {
super(new LinkedHashMap<>(initialCapacity, loadFactor));
}
// ------------------------------------------------------------------------- Constructor end
+
+ /**
+ * 将Key转为驼峰风格,如果key为字符串的话
+ *
+ * @param key KEY
+ * @return 驼峰Key
+ */
+ @Override
+ protected Object customKey(Object key) {
+ if (key instanceof CharSequence) {
+ key = StrUtil.toCamelCase(key.toString());
+ }
+ return key;
+ }
}
diff --git a/hutool-core/src/main/java/cn/hutool/core/map/CaseInsensitiveLinkedMap.java b/hutool-core/src/main/java/cn/hutool/core/map/CaseInsensitiveLinkedMap.java
index a0a0ff628..51cdd2561 100644
--- a/hutool-core/src/main/java/cn/hutool/core/map/CaseInsensitiveLinkedMap.java
+++ b/hutool-core/src/main/java/cn/hutool/core/map/CaseInsensitiveLinkedMap.java
@@ -6,14 +6,14 @@ import java.util.Map;
/**
* 忽略大小写的LinkedHashMap
* 对KEY忽略大小写,get("Value")和get("value")获得的值相同,put进入的值也会被覆盖
- *
+ *
* @author Looly
*
* @param 键类型
* @param 值类型
* @since 3.3.1
*/
-public class CaseInsensitiveLinkedMap extends CaseInsensitiveMap {
+public class CaseInsensitiveLinkedMap extends CustomKeyMap {
private static final long serialVersionUID = 4043263744224569870L;
// ------------------------------------------------------------------------- Constructor start
@@ -26,7 +26,7 @@ public class CaseInsensitiveLinkedMap extends CaseInsensitiveMap {
/**
* 构造
- *
+ *
* @param initialCapacity 初始大小
*/
public CaseInsensitiveLinkedMap(int initialCapacity) {
@@ -35,7 +35,7 @@ public class CaseInsensitiveLinkedMap extends CaseInsensitiveMap {
/**
* 构造
- *
+ *
* @param m Map
*/
public CaseInsensitiveLinkedMap(Map extends K, ? extends V> m) {
@@ -44,7 +44,7 @@ public class CaseInsensitiveLinkedMap extends CaseInsensitiveMap {
/**
* 构造
- *
+ *
* @param loadFactor 加载因子
* @param m Map
* @since 3.1.2
@@ -56,7 +56,7 @@ public class CaseInsensitiveLinkedMap extends CaseInsensitiveMap {
/**
* 构造
- *
+ *
* @param initialCapacity 初始大小
* @param loadFactor 加载因子
*/
@@ -64,4 +64,18 @@ public class CaseInsensitiveLinkedMap extends CaseInsensitiveMap {
super(new LinkedHashMap<>(initialCapacity, loadFactor));
}
// ------------------------------------------------------------------------- Constructor end
+
+ /**
+ * 将Key转为小写
+ *
+ * @param key KEY
+ * @return 小写KEY
+ */
+ @Override
+ protected Object customKey(Object key) {
+ if (key instanceof CharSequence) {
+ key = key.toString().toLowerCase();
+ }
+ return key;
+ }
}