List集合异常:list All elements are null
·
ArrayList允许添加null值。所以导致查询一个字段的时候会出现集合大小不为0,但是里面的元素却是All elements are null。
1.场景:
先看下迷惑现场:
会发现集合strings大小为1,但是集合里面却没有确切数据,显示为All elements are null 。初次发现堪称神奇啊。
然后看下这个集合的SQL:
返回的是一个字段 contract_no 并且显示的是Null。
然后再看下如果查询这张表的所有字段:
会惊奇的发现有一条数据,并且这条数据的contract_no的值是Null。
2.解析:
问题就在这个,我们根据查询条件其实是查询出一条数据,但是我们返回的字段只有一个并且恰巧是Null。所以才会出现集合大小为1,但是集合里面的数据都为Null的原因,后续若是对此集合进行操作就会出现list All elements are null错我。Null并不是没有数据哦,是数值为Null的数据。如果没有数据数据库会是这样的:
3.问题处理:
(1)在查询的时候可以加上个不为null的查询条件where contract_no is not null
(2)在业务代码中处理:
projectCodeList.remove(null); //移除第一个null
projectCodeList.removeAll(Collections.singleton(null)); //移除所有的null元素
更多推荐
所有评论(0)