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;
}