内容简介:feilong-core 1.10.6 发布了。feilong-core 是一个让 Java 开发更简便的工具包, 可以让你从大量重复的底层代码中脱身,提高工作效率; 让你的代码更简炼,易写、易读、易于维护; 本次升级共有 20 处变更, 具体参...
feilong-core 1.10.6 发布了。feilong-core 是一个让 Java 开发更简便的 工具 包, 可以让你从大量重复的底层代码中脱身,提高工作效率; 让你的代码更简炼,易写、易读、易于维护;
本次升级共有 20 处变更, 具体参见 1.10.6 milestone
1.10.6 文档地址: http://feilong-core.mydoc.io/
首先预览下,本次发布的核心内容 :
[Feature]
#681 添加 ParamUtil.toNaturalOrderingKeyJoinValue(Map<String, String>) 新建 将key和map直接拼接的方法
将 singleValueMap 转成自然排序, 然后将key和value直接拼接成字符串(不使用 = 和& 分隔).
示例:
Map<String, String> map = new HashMap<>(); map.put("service", "create_salesorder"); map.put("_input_charset", "gbk"); map.put("totalActual", "210.00"); map.put("address", "江苏南通市通州区888组888号"); LOGGER.debug(ParamUtil.toNaturalOrderingKeyJoinValue(map));
返回:
_input_charsetgbkaddress江苏南通市通州区888组888号servicecreate_salesordertotalActual210.00
#673 SortUtil 新增 Map<K, V> sortMapByKeyFixOrder(Map<K, V> map,K...keys) map 按照指定的固定key的顺序排序
按照key 指定名字顺序排序.
注意:
原 map 的顺序不变
示例:
Map<String, Integer> map = new HashMap<>(); map.put("DE", 99); map.put("L", 3428); map.put("O", 13); map.put("UN", 17); map.put("S", 6); //L-上市,S-暂停,DE-终止上市,UN-未上市 Map<String, Integer> sortByKeyAsc = sortMapByKeyFixOrder(map, "L", "UN", "DE", "S", "O"); LOGGER.debug(JsonUtil.format(sortByKeyAsc));
返回:
{ "L": 3428, "UN": 17, "S": 6, "DE": 99, "O": 13 }
#674 AggregateUtil 新增可以按照 多个属性名字来 groupCount的方法
com.feilong.core.util.AggregateUtil.groupCount(Iterable, String[])
com.feilong.core.util.AggregateUtil.groupCount(Iterable, String[], Predicate)
循环 beanIterable,只选择符合 includePredicate 的对象,统计 propertyName的值出现的次数.
说明:
返回的LinkedHashMap,key是propertyName名字,子map的key是propertyName对应的值,value是该值出现的次数;
顺序是 beanIterable propertyName的值的顺序
示例:
场景: 统计user list,属性名字是name 的值的数量 以及age值的数量
List<User> list = toList(// new User("张飞", 20), new User("关羽", 30), new User("赵云", 50), new User("刘备", 40), new User("刘备", 30), new User("赵云", 50)); Map<String, Map<Object, Integer>> map = AggregateUtil.groupCount(list, toArray("name", "age")); LOGGER.debug(JsonUtil.format(map));
返回:
{ "age": { "20": 1, "30": 2, "50": 2, "40": 1 }, "name": { "张飞": 1, "关羽": 1, "赵云": 2, "刘备": 2 } }
#667 BeanPredicateUtil 新增 Predicate<T> equalPredicate(T bean,String...propertyNames)
构造属性与一个指定对象 bean 的一组属性的值 propertyNames 都相等的判断器.
说明:
常用于解析集合,如 select,find, selectRejected, group, groupCount, sum 等方法.
示例:
场景: 在list中查找 名字是 关羽,并且 年龄是30 的user
User guanyu30 = new User("关羽", 30); List<User> list = toList(// new User("张飞", 23), new User("关羽", 24), new User("刘备", 25), guanyu30); Predicate<User> predicate = PredicateUtils .andPredicate(BeanPredicateUtil.equalPredicate("name", "关羽"), BeanPredicateUtil.equalPredicate("age", 30)); assertEquals(guanyu30, CollectionsUtil.find(list, predicate));
此时你可以优化成:
User guanyu30 = new User("关羽", 30); List<User> list = toList(// new User("张飞", 23), new User("关羽", 24), new User("刘备", 25), guanyu30); assertEquals(guanyu30, find(list, BeanPredicateUtil.equalPredicate(guanyu30, "name", "age")));
#628 NumberUtil 添加 BigDecimal getSubtractValue(Number beSubtractedValue,Number...subtractions) 计算减法的方法
说明:
示例:
NumberUtil.getSubtractValue(0, 2, 3) = -5 NumberUtil.getSubtractValue(0,null) = 0 NumberUtil.getSubtractValue(0, new Integer[5]) = 0 NumberUtil.getSubtractValue(2, 1.1) = 0.9 NumberUtil.getSubtractValue(1000, 99.5, 99.0) = 801.5 NumberUtil.getSubtractValue(1000, 50, null) = 950 NumberUtil.getSubtractValue(-1000, -50, 100) = -1050 NumberUtil.getSubtractValue(null, 5) // NullPointerException
#686 添加 DateUtil.isToday(Date),判断指定的日期 是否是 今天的 方法
判断指定的日期 date,是不是今天的日期.
示例:
DateUtil.isToday(new Date()) = true // 如果今天 是2017年12月14日 DateUtil.isToday(toDate("2016-06-16 22:59:00", COMMON_DATE_AND_TIME)) = false
#683 添加 DateExtensionUtil.getTodayStartAndEndPair() 新建获得 今天 开始和结束的时间的方法
获得 今天的开始时间 00:00:00.000 及今天的结束时间 23:59:59.999.
一般用于统计当天数据,between ... and ...
示例:
比如今天的是 2012-10-16 22:18:34 返回: 2012-10-16 00:00:00.000, 2012-10-16 23:59:59.999
#684 添加 DateExtensionUtil.getYesterdayStartAndEndPair() 新建获得 昨天 开始和结束的时间的方法
#677 添加 DateExtensionUtil.getMonthStartAndEndPair() 新建获得当前月区间的方法
#678 添加 DateExtensionUtil.getYearStartAndEndPair() 新建获得当前年区间的方法(第一天0点 到最后一天23:59:59)
[Update]
#687 DateUtil isEquals(Date date1,Date date2,String datePattern),如果 date1 == date2 直接返回true
#669 RegexPattern 移动到 feilong-validator 项目
#621 RegexPattern 配置是否可以提到配置文件,便于商城定制
#663 更新手机号码正则表达式
#665 RegexUtil 加上缓存
[Remove]
#682 删除 DateExtensionUtil.getResetTodayAndTomorrow() getResetYesterdayAndToday 方法
#592 删除 @deprecated com.feilong.core.RegexPattern.EMAIL
#676 删除没有用的 feilong-core-regex.properties
[Fix Bug]
none
[javadoc]
none
[test]
#672 MessageFormatUtilTest.testFormat() 单元测试报错 bug
[help wanted]
#670 ThreadUtil 添加 javadoc 关于 callable Javadoc
[log]
none
【声明】文章转载自:开源中国社区 [http://www.oschina.net]
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- Java工具包:资源访问器
- Synonyms:中文近义词工具包
- AopLog 2.4 发布,日志工具包
- TensorFlow 模型优化工具包正式推出
- [Nuget]使用Nuget管理工具包
- xk-time 0.0.7 发布,Java 时间工具包,新增 Cron 表达式工具
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
动手玩转Scratch2.0编程
马吉德·马吉 (Majed Marji) / 电子工业出版社 / 2015-10-1 / CNY 69.00
Scratch 是可视化的编程语言,其丰富的学习环境适合所有年龄阶段的人。利用它可以制作交互式程序、富媒体项目,包括动画故事、读书报告、科学实验、游戏和模拟程序等。《动手玩转Scratch2.0编程—STEAM创新教育指南》的目标是将Scratch 作为工具,教会读者最基本的编程概念,同时揭示Scratch 在教学上的强大能力。 《动手玩转Scratch2.0编程—STEAM创新教育指南》共......一起来看看 《动手玩转Scratch2.0编程》 这本书的介绍吧!