一、Bigdecimal
Bigdecimal.compareTo(Bigdecimal)//比较大小 -1小于 0等于 1大于
Bigdecimal.setScale(n);//保留n为小数
Bigdecimal.stripTrailingZeros();//去掉末尾的0
Bigdecimal.add(Bigdecimal);//加
Bigdecimal.subtract(BigDecimal);//减
Bigdecimal.multiply(BigDecimal);//乘
Bigdecimal.divide(BigDecimal);//除
二、Stream
Java8 Stream:2万字20个实例,玩转集合的筛选、归约、分组、聚合
扩展:
①将list集合拼接成特定符号分隔的字符串
List<String> list = Arrays.asList("a", "b", "c");
String join = list.stream().collect(Collectors.joining(","));
②利用strem流分组
//按照创建时间分组,因为map是无序的(treeMap除外),所以如果要排序,最好再放到list里面去排序
List<T> lists = new ArrayList();
Map<String,List<T>> maps = lists.stream().collect(Collectors.groupingBy(t->DateUtils.dateToStr(t.getCreateTime(),DateUtils.YYYYMMStr)));
三、JSR 303 验证
四、正则
① 车牌号正则
String CAR_NUM_REGEX = "^(([京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领][A-Z](([0-9]{5}[DF])|([DF]([A-HJ-NP-Z0-9])[0-9]{4})))|([京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领][A-Z][A-HJ-NP-Z0-9]{4}[A-HJ-NP-Z0-9挂学警港澳使领]))$";
② 电话号码正则
String PHONE_REGEX = "^((13[0-9])|(14[0,1,4-9])|(15[0-3,5-9])|(16[2,5,6,7])|(17[0-8])|(18[0-9])|(19[0-3,5-9]))\\d{8}$";
③ 身份证正则
String ID_CARD_REGEX = "^[1-9]\\d{5}[1-9]\\d{3}((0[1-9])|(1[0-2]))(0[1-9]|([1|2][0-9])|3[0-1])((\\d{4})|\\d{3}X)$";
④ 邮箱正则
String EMAIL_REGEX = "^([a-z0-9A-Z]+[-|\\.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-zA-Z]{2,}$";
⑤ 社会统一码验证
String COMPANY_NUM_REGEX = "^([159Y]{1})([1239]{1})([0-9ABCDEFGHJKLMNPQRTUWXY]{6})([0-9ABCDEFGHJKLMNPQRTUWXY]{9})([0-90-9ABCDEFGHJKLMNPQRTUWXY])$";
⑥ 日期格式验证(yyyy-mm-dd)
String DATE_REGEX = "(([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})/(((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)/(0[1-9]|[12][0-9]|30))|(02-(0[1-9]|[1][0-9]|2[0-8]))))|((([0-9]{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))-02-29)$";
⑦ 月份验证
String YEAR_REGEX = "20[0-9]{2}";
⑧年份验证
String MONTH_REGEX = "20[0-9]{2}\\-((0[1-9])|(1[0-2]))";
⑨ html标签
String HTML_REGEX = "<.+?>";
五、关于空指针异常
除了常规的判空操作
① null = object
:null在前避免空指针异常
② A.equals(B)
: A一定不能为空
③BeanUtils.copyproperties(source,target)
:source 不能为空
六、Optional类
容器类,可以保存T和null,解决空指针异常
① 创建空的optional
Optional.empty();
② 创建包含值的optional
Optional.of(); //抛空指针异常
Optional.ofNullable();//不抛
③ 检查是否有值
Optional.isPresent();
④ 取值
Optional.get();