feilong-core 1.10.4 发布了。feilong-core 是一个让 Java 开发更简便的工具包, 可以让你从大量重复的底层代码中脱身,提高工作效率; 让你的代码更简炼,易写、易读、易于维护;
本次升级共有 17 处变更, 具体参见 1.10.4 milestone
1.10.4 文档地址: http://feilong-core.mydoc.io/
1.[特性]
#654 新增 MapUtil.getSubMap(Map<K, T>, Iterable<K>)
获得一个map 中,指定的keys 整理成新的map.
说明:
返回的map为 LinkedHashMap,key的顺序 按照参数 keys的顺序
如果循环的 key不在map key里面,则忽略该key,并输出debug level log
示例:
Map<String, Integer> map = new HashMap<>(); map.put("a", 3007); map.put("b", 3001); map.put("c", 3001); map.put("d", 3003); LOGGER.debug(JsonUtil.format(MapUtil.getSubMap(map,toList("a", "c"))));
返回:
{ "a": 3007, "c": 3001 }
#655 新增 MapUtil.getSubMapExcludeKeys(Map<K, T>, Iterable<K>)
获得 sub map(排除指定的 excludeKeys).
说明:
原 map 不变
此方法可以提取Collections.unmodifiableMap(Map)
返回值为 LinkedHashMap,key的顺序按照参数 map的顺序
示例:
Map<String, Integer> map = new LinkedHashMap<>(); map.put("a", 3007); map.put("b", 3001); map.put("c", 3002); map.put("g", -1005); LOGGER.debug(JsonUtil.format(MapUtil.getSubMapExcludeKeys(map, toList("a", "g", "m"))));
返回:
{ "b": 3001, "c": 3002 }
#633 ThreadUtil 添加 void execute(Runnable runnable,int threadCount) 方法,创建指定数量 threadCount 的线程,并执行.
适用于场景: 模拟个50个线程调用 xxx 方法 的场景#652 新建 AnnotationToStringBuilder
#656 新建 DefaultAnnotationToStringBuilder
2. 修改
commons-lang 升级到 3.6
#640 原调用 org.apache.commons.lang3.CharEncoding.UTF_8 改成 StandardCharsets.UTF_8.name() 坏味道
#639 原调用 SystemUtils.LINE_SEPARATOR 改成 java.lang.System.lineSeparator() 坏味道
#634 如果 RegexUtil.group(String, CharSequence, int) group <0 抛出异常
3. 删除
#638 删除 cobertura-maven-plugin , 添加 jacoco-maven-plugin
4. bug
#648 修改 MapUtil.getSubMapExcludeKeys(Map<K, T>, K...)内部实现,不会改变原来的map bug
5. javadoc
#649 修改 URIUtil.encode javadoc
6.单元测试
#650 添加 EncodeParameterizedTest
#637 完善 RegexUtilTest 单元测试
#636 完善 GroupTest 单元测试
#635 补充 GroupIntTest 单元测试