Java 如何检查列表是否包含空字符串形式的所有元素?

Java 如何检查列表是否包含空字符串形式的所有元素?,java,list,linked-list,Java,List,Linked List,我有一个LinkedList作为- List<String> tables = new LinkedList<String>(); 是否有任何直接的方法来识别表列表中是否所有元素都是null字符串,然后返回true,否则返回false 我能想到的一种方法是继续迭代它,看看它是否有空字符串,然后相应地返回true或false 更新:- public static void main(String[] args) { String table_1 = null; Strin

我有一个
LinkedList
作为-

List<String> tables = new LinkedList<String>();
是否有任何直接的方法来识别
列表中是否所有元素都是
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;
}
publicstaticvoidmain(字符串[]args){
字符串表_1=null;
字符串表_2=“hello”;
列表表=新的LinkedList();
表.增加(表1);
表2.添加(表2);
布尔ss=isAllNull(表);
系统输出打印LN(ss);
}
公共静态布尔值isAllNull(Iterable列表){
对于(对象对象:列表){
如果(obj!=null)
返回false;
}
返回true;
}

您是对的,这就是解决方案。您可以检查是否存在NOTNULL,并在第一次出现时返回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");}
}
字符串表_1=null;
字符串表_2=null;
列表表=新的LinkedList();
表.增加(表1);
表2.添加(表2);
for(字符串表:表){
如果(表!=null)
{System.out.println(“False”);}
}

是的,您所想的是好的,如果您将其作为实用程序类的一部分,效果会更好

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

    return true;
}
public静态布尔值isAllNull(Iterable列表){
对于(对象对象:列表){
如果(obj!=null)
返回false;
}
返回true;
}

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

如果您可以使用Guava库:

Iterables.all(input, Predicates.isNull());
通过
静态导入
它将变得更加可读:

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

Iterable<?> input = ...
all(input, isNull())
import static com.google.common.base.Predicates.isNull;
导入静态com.google.common.collect.Iterables.all;
Iterable输入=。。。
全部(输入,isNull())

无第三方库:

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

您认为的方法是正确的。拥有Iterable有什么好处吗?或者我们不应该按原样传递列表并对其进行迭代吗?是的,使用
Iterable
接口代替
List
接口将使此实用程序方法与类型
Set
队列
的其他
Iterable
实现协同工作,
Stack
等。这是一个util,因此最好最大化多态性。酷。谢谢你的小费。我已经更新了我的问题。你能检查一下我的做法是否正确吗?只要再看一眼就行了是的,没错。在您给出的代码中,它将返回false,因为
表2
不是
null
。如果将
表2
设置为
null
,则它将返回true。
Set set = new HashSet(tables);
boolean allNull = set.size() == 1 && set.iterator().next() == null;