常用工具类

package www.moonknight;

import com.google.common.base.Splitter;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.time.DateFormatUtils;
import org.apache.commons.lang3.time.DateUtils;

import java.text.ParseException;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Date;
import java.util.List;

public class utilSDkLearn {
    public static void main(String[] args) throws ParseException {
//        demo1();
//        demo2();
//        demo3();
//        demo4();
//        demo5();
//        demo6();
        demo7();

    }

    private static void demo7() {
        Date now = new Date();
        System.out.println(now);

        // 加 时间
        /**
         * Fri Jul 02 18:22:11 CST 2021
         */
        System.out.println(DateUtils.addMonths(now, 1));
        /**
         * Thu Jun 03 18:22:11 CST 2021
         */
        System.out.println(DateUtils.addDays(now, 1));
        /**
         * Wed Jun 02 19:22:11 CST 2021
         */
        System.out.println(DateUtils.addHours(now, 1));
        /**
         * Wed Jun 02 18:23:11 CST 2021
         */
        System.out.println(DateUtils.addMinutes(now, 1));

        // 判断是否 同一天
        /**
         * true
         */
        System.out.println(DateUtils.isSameDay(DateUtils.addHours(now, 1),now));

        // 时分秒过滤,只保留日期
        /**
         * Wed Jun 02 00:00:00 CST 2021
         */
        System.out.println(DateUtils.truncate(now, Calendar.DATE));


    }

    private static void demo6() throws ParseException {
        // Date 转化为字符串
        System.out.println(DateFormatUtils.format(new Date(), "yyyy-MM-dd HH:mm:ss"));
        // 字符串 转 Date
        System.out.println(DateUtils.parseDate("2020-05-07 22:00:00", "yyyy-MM-dd HH:mm:ss"));

        /**
         * 2021-06-02 18:13:27
         * Thu May 07 22:00:00 CST 2020
         */
    }

    private static void demo5() {
        // 字符串拆分
        Splitter splitter = Splitter.on(",");

        System.out.println(splitter.splitToList("ab,,b,c"));
        /**
         * [ab, , b, c]
         */
        // 忽略空字符串
        System.out.println(splitter.omitEmptyStrings().splitToList("ab,,b,c"));
        /**
         * [ab, b, c]
         */
    }

    private static void demo4() {
        // 字符串拼接
        String[] s = new String[]{"test", "1234", "5678"};
        String join = StringUtils.join(s, ",");
        System.out.println(join);

        /**
         * test,1234,5678
         */
    }

    private static void demo3() {
        // 默认替换所有关键字
        System.out.println(StringUtils.replace("aba", "a", "z"));
        // 替换关键字,仅替换一次
        System.out.println(StringUtils.replaceOnce("aba", "a", "z"));
        // 使用正则表达式替换
        System.out.println(StringUtils.replacePattern("ABCabc123", "[^A-Z0-9]+", ""));

        /**
         * zbz
         * zba
         * ABC123
         */
    }

    private static void demo2() {
        // 字符串固定长度 8位,若不足,往左补 0
        System.out.println(StringUtils.leftPad("1", 8, "0"));
        // 字符串固定长度 8位,若不足,往右补 0
        System.out.println(StringUtils.rightPad("1", 8, "0"));
        // 字符串固定长度 8位,若不足,往两侧补 0
        System.out.println(StringUtils.center("1", 7, "0"));

        /**
         * 00000001
         * 10000000
         * 0001000
         */
    }

    private static void demo1() {
        // isEmpty 认为 空格不是空的
        System.out.println(StringUtils.isEmpty(" ")); //false
        System.out.println(StringUtils.isBlank(" ")); //true

        /**
         * false
         * true
         */

    }
}

复杂对象与json的互转

List<Person> list = new ArrayList<>();
list.add(new Person("宋江", "水泊梁山", 38));
list.add(new Person("孙悟空", "灵山", 5098416));
list.add(new Person("贾宝玉", "宁国府", 18));
list.add(new Person("曹操", "许昌", 58));

String s = JSON.toJSONString(list);
System.out.println("json = " + s);

List<Person> people = JSON.parseObject(s, new TypeReference<List<Person>>() {
});

System.out.println("people = " + people);

参数校验

// @Pattern 可以通过正则校验
@Pattern(regexp = "[a-zA-Z]")
@NotEmpty
private String firstLetter;


// @Min 可以限制最小值
@Min(value = 0,message = "sort必须大于等于0")
@NotEmpty
private Integer sort;


// @URL 可以限制参数必须是url
@URL(message = "logo必须为合法url")
@NotEmpty
private String logo;

将父子级的数据组成 tree 形数据给前端

/**
* 组成 tree 形数据
* @param params
* @return
*/
@Override
public List listTree(Map<String, Object> params) {
List<CategoryEntity> entities = this.list();
// 设置root,parentId = 0
CategoryEntity menu = new CategoryEntity();
menu.setCatId(0l);
List<CategoryEntity> collect = getChildren(menu, entities);
return collect;
}

/**
* 递归找到所有子级
*
* @param rootMenu
* @param allMenus
* @return
*/
private List<CategoryEntity> getChildren(CategoryEntity rootMenu, List<CategoryEntity> allMenus) {
// 流式编程 帅
// 获取所有的本级分类
List<CategoryEntity> collect = allMenus.stream().filter(menu ->
// 过滤
menu.getParentCid().equals(rootMenu.getCatId())
).map(menu -> {
// 映射 找到子级分类
menu.setChildren(getChildren(menu, allMenus));
return menu;
}).sorted((menu1, menu2) -> {
// 本级分类排序一下
return (menu1.getSort() == null ? 0 : menu1.getSort()) - (menu2.getSort() == null ? 0 : menu2.getSort());
}).collect(Collectors.toList());
return collect;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值