我有一个简短的问题。
假设我们有一个名为List
的{{1}} ArrayList
。我们想检查列表是否为空。
:
之间有什么区别(如果有的话)list
和
if (list == null) { do something }
我正在研究一种古老的代码(由其他人于2007年左右编写),它正在使用if (list.isEmpty()) { do something }
构造。但是,当我们使用list == null
方法时,为什么要使用这种结构......
答案 0 :(得分:29)
第一个告诉您是否已为list
变量分配了一个List实例。
第二个告诉您list
变量引用的List是否为空。
如果list
为空,则第二行将抛出NullPointerException
。
如果你想在列表为空时这样做,那么写一下会更安全:
if (list != null && list.isEmpty()) { do something }
如果要在列表为空或空的情况下执行某些操作,可以写:
if (list == null || list.isEmpty()) { do something }
如果你想在列表不为空的情况下做某事,你可以写:
if (list != null && !list.isEmpty()) { do something }
答案 1 :(得分:8)
另一种方法是使用Apache Commons Collections。
查看方法CollectionUtils.isEmpty()。它更简洁。
答案 2 :(得分:2)
if (list == null)
检查列表是否为null
。
if (list.isEmpty())
检查列表是否为空,如果列表为null
而您致电isEmpty()
,则会显示NullPointerException
。
最好先检查列表是否为null
,然后检查是否为空。
if(list !=null && ! list.isEmpty()){
// do your code here
}