collection中的null,isEmpty用法
只使用java utils包的isEmpty.
第一种情况
实例化list,但是size为空。
List<String> list =new ArrayList<>();
if (list.isEmpty()) {
System.out.println("1");
}
if (!list.isEmpty()) {
System.out.println("2");
}
if (list != null) {
System.out.println("3");
}
if (list != null && list.size() > 0) {
System.out.println("4");
}
输出:
1
3
第二种情况
add值到list中
List<String> list =new ArrayList<>();
list.add("da");
if (list.isEmpty()) {
System.out.println("1");
}
if (!list.isEmpty()) {
System.out.println("2");
}
if (list == null) {
System.out.println("3");
}
if (list != null && list.size() > 0) {
System.out.println("4");
}
输出:
2
4
第三种情况
只创建list的引用,不实例化。
List<String> list = null;
if (list.isEmpty()) {
System.out.println("1");
}
if (!list.isEmpty()) {
System.out.println("2");
}
if (list != null) {
System.out.println("3");
}
if (list != null && list.size() > 0) {
System.out.println("4");
}
输出:
Exception in thread "main" java.lang.NullPointerException
改进办法:
使用org.apache.commons.collections.CollectionUtils;
CollectionUtils.isEmpty(Collecions<extend>);
可以避免
java.lang.NullPointerException异常
CollectionUtils.isEmpty和 == null的区别
本文所指的 CollectionUtils 所属包
org.apache.commons.collections
CollectionUtils.isEmpty() 包含null,size=0等多种情况
而== null 只能用来判断是否为null
举个例子
if (CollectionUtils.isEmpty(orderDTO.getOrderDetailList())) {
log.error("[创建订单]购物车不能为空,customerOrderForm = {}", customerOrderForm);
throw new CustomerOrderControllerException(CustomerOrderControllerStateEnum.SHOPPING_CART_EMPTY);
}
OrderDTO orderDTOResult = orderService.createOrder(orderDTO);
此处if判断条件中,不仅可以判断获取的List是否为null,还能判断获取的List的size是否为0
以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。