检查列表是否包含至少一个非null对象

时间:2016-12-07 16:01:17

标签: java list if-statement collections

是否有任何方法可以检查List是否为空并且有一个非空的对象?

以下代码是否有更好的替代方案

if( !list.isEmpty() && list.get(0) != null){
    ...
}

如果能以任何方式改进这段代码,请告诉我。

2 个答案:

答案 0 :(得分:6)

我猜你可以试试java 8

if (list.stream().anyMatch(e -> e != null)) {... }

答案 1 :(得分:2)

您的代码无效。如果null元素是第二个或第三个,会发生什么?

一种简单的方法是使用方法contains

  

如果此列表包含指定的元素,则返回true。更正式地说,当且仅当此列表包含至少一个元素e时才返回true(o == null?e == null:o.equals(e))。

如果你需要检查它是否只存在一个NOT null元素,那么你需要编写代码:

int countNull = 0;
for (Object obj : list) {
    if (obj == null) {
        countNull++;
    }
}
if (countNull == list.size() - 1) {
    // Contains exactly one not null element
}