add FuncKeyMap

This commit is contained in:
Looly 2021-03-05 21:22:31 +08:00
parent 71a82e0534
commit 047be5a1f8
2 changed files with 46 additions and 0 deletions

View File

@ -10,6 +10,7 @@
* 【core 】 FileTypeUtil使用长匹配优先pr#1457@Github
* 【core 】 IterUtil和CollUtil增加isEqualList方法issue#I3A3PY@Gitee
* 【crypto 】 增加PBKDF2issue#1416@Github
* 【core 】 增加FuncKeyMapissue#1402@Github
### Bug修复
* 【socket 】 修复Client创建失败资源未释放问题。

View File

@ -0,0 +1,45 @@
package cn.hutool.core.map;
import java.util.Map;
import java.util.function.Function;
/**
* 自定义函数Key风格的Map
*
* @param <K> 键类型
* @param <V> 值类型
* @author Looly
* @since 5.6.0
*/
public class FuncKeyMap<K, V> extends CustomKeyMap<K, V> {
private static final long serialVersionUID = 1L;
private Function<Object, K> keyFunc;
// ------------------------------------------------------------------------- Constructor start
/**
* 构造
*
* @param m Map
* @param keyFunc 自定义KEY的函数
*/
public FuncKeyMap(Map<K, V> m, Function<Object, K> keyFunc) {
super(m);
}
// ------------------------------------------------------------------------- Constructor end
/**
* 将Key转为驼峰风格如果key为字符串的话
*
* @param key KEY
* @return 驼峰Key
*/
@Override
protected Object customKey(Object key) {
if (null != this.keyFunc) {
return keyFunc.apply(key);
}
return key;
}
}