在Java中,判断一个List集合是否为空,除了判断list是否等于null,我们还要使用list.size()或list.isEmpty()判断集合是否为0。
1. list.size()和list.isEmpty()的区别:
ArrayList的isEmpty()源码如下:
public boolean isEmpty() {
return size == 0;
}
list.isEmpty()和list.size()==0 本质是没有区别的,判断一个集合有没有元素,建议用isEmpty()方法,这样会显得清晰简明一些。
2. 对List集合为空的判断的建议方式:
if(list != null && !list.isEmpty()){
list不为空的操作
}else{
list为空的操作
}
3. List集合为空时使用 for each
循环是否有问题
做一个简单的测试:
public static void main(String[] args) {
List<String> list = new ArrayList<String>();
for (String item : list) {
// todo
}
}
当 list!= null
,但 list.size() == 0
,此时 for each
循环是不会产生异常,当然也不可能会进入循环;
public static void main(String[] args) {
List<String> list = null;
for (String item : list) {
// todo
}
}
当 list == null
,很明显,这个时候肯定会抛异常:java.lang.NullPointerException
总结:Java中的 for each
循环底层实现是通过迭代器(Iterator)来实现的, list.iterator()
时,list == null
必然抛异常 ,但 list.size() == 0
只会在iterator.hasNext()
终止循环而不会产生异常。for each
循环更多的只能算作Java的语法糖,其本身隐藏着很多坑,后续总结之后再把文章链接附在这里。
网友评论