• 开创生态文明新时代 绘出美丽中国新图景 2018-04-26
  • 贵州桐梓:困难群众打工差点错过“移民搬迁”之后 2018-04-26
  • 国乒男女队出征第54届世乒赛“盼天晴” 2018-04-26
  • “鲶鱼”初显 “自主三强”以合作应“开放”? 2018-04-25
  • 第二批慈善组织互联网募捐信息平台遴选结果公示 2018-04-25
  • 国乒男女队出征第54届世乒赛“盼天晴” 2018-04-24
  • 崔世安会见吴政隆 双方就推进苏澳合作深入交谈 2018-04-24
  • 音乐剧《朝暮有情人》演绎港穗两地三代情 2018-04-24
  • 3月70城房价环比涨幅扩大 2018-04-24
  • 国际油价4月19日涨跌互现 2018-04-23
  • 南平市人民防空办公室成立武夷新区人防办事处 2018-04-23
  • 劳动者合法权利也不可“任性”滥用 2018-04-22
  • SKT招募绝地求生队员 网友迫切看到faker与韦神对枪! 2018-04-22
  • 送别余光中:诗人虽远行,乡愁永流传 2018-04-22
  • 连超模肯豆都“爱不释脚”的穆勒鞋 你不了解一下?|穆勒鞋|肯豆|超模 2018-04-22
  • feilong-core 1.10.6,让 Java 开发更简便的工具包

    栏目: 软件资讯 发布于: 2017-12-16 20:20:02

    有免费的MySQL,为什么还要买? >>>??

    feilong-core 1.10.6 发布了。feilong-core 是一个让 Java 开发更简便的工具包,?可以让你从大量重复的底层代码中脱身,提高工作效率; 让你的代码更简炼,易写、易读、易于维护;

    本次升级共有?20?处变更, 具体参见?1.10.6 milestone

    1.10.6 文档地址:?http://www.rocksun.cn/

    首先预览下,本次发布的核心内容 :

    image

    [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.rocksun.cn]

    本站文章除注明转载外,均为本站原创或编译?;队魏涡问降淖?,但请务必注明出处。
    转载请注明:文章转载自 七星彩票平台
    本文标题:feilong-core 1.10.6,让 Java 开发更简便的工具包
    IT技术书籍推荐:
    疯狂Android讲义(第3版)
    疯狂Android讲义(第3版)
    李刚 (作者)
    移动互联网已经成为当今世界发展最快、市场潜力最大、前景最诱人的业务,而Android则是移动互联网上市场占有率最高的平台。 本书是《疯狂Android讲义》的第3版,本书基于最新的Android 5,并采用了Google推荐的IDE:Android Studio作为开发工具,书中每个案例、每个截图都全面升级到Android 5。本书全面介绍了Android应用开发的相关知识,全书内容覆盖了Android用户界面编程、Android四大组件、Android资源访问、图形/图像处理、事件处理机制、Android输入/输出处理、音频/视频多媒体应用开发、OpenGL与3D应用开发、网络通信编程、Android平台的Web Service、传感器应用开发、GPS应用开发、整合第三方Map服务等。