联调阶段会出现list的size为1,但是list里的值却为null.
一、例:
List<Integer> a = Collections.singletonList(null);
if(CollectionUtils.isEmpty(a)){
System.out.println(true);
}else{
System.out.println(false);
}
if(a == null || a.size() < 1){
System.out.println(true);
}else{
System.out.println(false);
}
List<Integer> b = new ArrayList<>();
b.add(null);
if(CollectionUtils.isEmpty(b)){
System.out.println(true);
}else{
System.out.println(false);
}
if(b == null || b.size() < 1){
System.out.println(true);
}else{
System.out.println(false);
}
if(a.isEmpty()){
System.out.println(true);
}else{
System.out.println(false);
}
运行结果:
false
false
false
false
false
二、解决方案:
1.jdk8及以上:
list.removeIf(Objects::isNull);
2.apache common包:
CollectionUtils.filter(list, PredicateUtils.notNullPredicate());
3.谷歌 guva库:
Iterables.filter(list, Predicates.notNull())
4.循环判断去除: