如何检查List是否包含所有元素为NULL字符串?

时间:2014-02-06 02:24:56

标签: java list linked-list

我有一个LinkedList -

List<String> tables = new LinkedList<String>();

有时,tables列表看起来像,意味着它里面会包含所有空字符串值 -

[null, null]

有没有直接的方法来确定tables列表是否包含所有元素null字符串,然后返回true,否则返回false。

我能想到的一种方法就是继续迭代它,看看它是否有空字符串,然后相应地返回true或false。

更新: -

public static void main(String[] args) {
String table_1 = null;
String table_2 = "hello";
List<String> tables = new LinkedList<String>();
tables.add(table_1);
tables.add(table_2);

boolean ss = isAllNull(tables);
System.out.println(ss);
}

public static boolean isAllNull(Iterable<?> list) {
for (Object obj : list) {
    if (obj != null)
    return false;
}

return true;
}

4 个答案:

答案 0 :(得分:2)

如果你可以使用Guava库:

Iterables.all(input, Predicates.isNull());

使用static import,它将变得更具可读性:

import static com.google.common.base.Predicates.isNull;
import static com.google.common.collect.Iterables.all;

Iterable<?> input = ...
all(input, isNull())

答案 1 :(得分:0)

你是对的,这是解决方案。您可以检查是否存在任何非null并在第一次出现时返回false。

String table_1 = null;
String table_2 = null;
List<String> tables = new LinkedList<>();
tables.add(table_1);
tables.add(table_2);

for (String table : tables) {
    if (table != null)
    {System.out.println("False");}
}

答案 2 :(得分:0)

是的,如果你把它作为实用工具类的一部分,你认为是好的,更好的

public static boolean isAllNull(Iterable<?> list){
    for(Object obj : list){
        if(obj != null)
            return false;
    }

    return true;
}

请注意,此util接受Iterable接口,以便在更广泛的范围内工作。

答案 3 :(得分:0)

没有第三方图书馆:

Set set = new HashSet(tables);
boolean allNull = set.size() == 1 && set.iterator().next() == null;