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

Java 检查列表是否至少包含一个非空对象,java,list,if-statement,collections,Java,List,If Statement,Collections,是否有任何方法可以检查列表是否为空,是否有一个对象不为空 以下代码是否有更好的替代方案 if( !list.isEmpty() && list.get(0) != null){ ... } 请告诉我这段代码是否可以改进。我想你可以试试java 8 if (list.stream().anyMatch(e -> e != null)) {... } 你的代码不起作用。如果null元素是第二个或第三个,会发生什么情况 一个简单的方法是使用以下方法: 如果此列表包含指

是否有任何方法可以检查列表是否为空,是否有一个对象不为空

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

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

请告诉我这段代码是否可以改进。

我想你可以试试java 8

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

你的代码不起作用。如果
null
元素是第二个或第三个,会发生什么情况

一个简单的方法是使用以下方法:

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

如果需要检查它是否正好存在一个NOTNULL元素,则需要编写以下代码:

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

我认为您不需要第二部分的列表。获取(0)!=null”,因为isEmpty()调用已经处理了它。此外,list.get(0)可能为null,而list.get(1)不为null,因此它不会根据您的条件添加值。@mba12我只关心第一个对象不为null。如果是这种情况,您应该编辑您的问题,以反映只有第一个对象不为null的条件。我已编辑该问题。或
anyMatch(Objects::nonNull)
@tobias_k这是最好的答案!我想检查是否只存在一个非空的对象。不,OP想检查是否至少有一个非空元素。@codeMan你是什么意思?是否要检查是否只有一个非空元素?在这种情况下,请更新您的问题标题。@codeMan谢谢。我编辑了我的答案(第二部分),以展示如何查看列表是否只包含一个NOTNULL元素。