说在前面,本文旨在记录编码中实用的、易忘记的、易混淆的编码技巧,目的很简单,牢记这些小技巧,提高编码效率。大神请略过~~~把时间用在更有意义的事情上!
本文记录的小技巧,要么是每每编码的时候记不清楚,需要百度,耽搁时间;那么是生产上出过问题的血泪史...
1、List<String>用逗号拼接元素
List<String> list = Lists.newArrayList();
list.add("a1");
list.add("a2");
String join = String.join(",", list);
2、mybatis查询数据的时候,如果查询不到,是不会返回null,要么返回对象,那么返回集合
3、对象属性拷贝建议用org.springframework.beans.BeanUtils,源对象在前,目标对象在后
//org.springframework.beans.BeanUtils
public static void copyProperties(Object source, Object target){....}
4、数组判空
//null,集合元素为0,都是空
CollectionUtils.isEmpty(Lists.newArrayList())
5、字符串判空,isBlank会去除字符串前后空格,isEmpty不会
String aa = " ";
//org.apache.commons.lang3
StringUtils.isBlank(aa);//true
StringUtils.isEmpty(aa);//false
6、stream处理空数组,或者filter后集合为空,也不会报错
List<String> list = Lists.newArrayList();
List<String> collect = list.stream().map(x -> x+"").collect(Collectors.toList());//[]
备注:追求性能略过
7、list中元素为空也不会报错,但是for中的代码不会执行
List<String> list = Lists.newArrayList();
for (String s : list) {System.out.println("s = " + s);
}
8、filter表达式为false过滤,true保留
List<String> list = Lists.newArrayList();
List<String> collect = list.stream().filter(x -> StringUtils.isNotBlank(x)).collect(Collectors.toList());
9、表达式为true不抛异常
Assert.isTrue(true, "aaa");
Assert.isNull(null, "aaa");
Assert.isEmpty(null, "aaa");
10、字符串转换
(String)强转,只有字符串和null不会报错,null强转后还是null
String.valueOf(),一切皆可转,null转为"null"
String a1 = "a1";
String b1 = (String)a1;//不报错
String a2 = null;
String b2 = (String)a2;//不报错,return null
String b2_2 = String.valueOf(a2);//不报错,return "null"
Integer a3 = 3;
String b3 = (String)a3;//飘红,编译不通过
Object a5 = 3;
String b5 = (String)a5;//编译通过,运营报错
String b5_2 = String.valueOf(a5);//不报错
11、数组中获取第一个元素
//没有元素则返回一个null塞给Optional,使用的时候判断first.isPresent()是否为ture即可
List<String> objects = Lists.newArrayList();
Optional<String> first = objects.stream().findFirst();
if (first.isPresent()) {String s = first.get();
}