如果您尝试检查特定位置的特定元素是否为空(不仅与 不同null
,而且与不同""
),所提供的解决方案还不够。
Java 有很多方法可以做到这一点。让我们看看其中的一些:
您可以将数组转换为List
(使用Arrays's asList
方法)并通过contains()
方法检查条件:
import java.util.*;
public class Test1 {
private static boolean method1_UsingArrays(String[] array) {
return Arrays.asList(array).contains(null)
|| Arrays.asList(array).contains("");
}
}
也可以使用Collections's disjoint
方法来检查两个集合是否有共同的元素:
import java.util.*;
public class Test2 {
private static String[] nullAndEmpty = {"", null};
private static boolean method2_UsingCollectionsDisjoint(String[] array) {
// disjoint returns true if the two specified collections have no elements in common.
return !Collections.disjoint( //
Arrays.asList(array), //
Arrays.asList(nullAndEmpty) //
);
}
}
如果您能够使用Java 8(我最喜欢的选项),则可以使用新的Streams API。
import java.util.stream.*;
import java.util.*;
public class Test3 {
private static boolean method3_UsingJava8Streams(String[] array) {
return Stream.of(array).anyMatch(x -> x == null || "".equals(x));
}
}
trim
与其他选项相比,如果您需要每个字符串(或调用其他任何方法) ,这更容易处理String
:
Stream.of(array).anyMatch(x -> x == null || "".equals(x.trim()));
然后,您可以轻松地调用和测试它们:
public static void main(String[] args) {
// Ok tests
String[] ok = {"a", "b", "c"};
System.out.println("Method 1 (Arrays - contains): " + method1_UsingArrays(ok)); // false
System.out.println("Method 2 (Disjoint): " + method2_UsingCollectionsDisjoint(ok)); // false
System.out.println("Method 3 (Java 8 Streams): " + method3_UsingJava8Streams(ok)); // false
System.out.println("-------------------------------");
// Nok tests
String[] nok = {"a", null, "c"};
System.out.println("Method 1 (Arrays - contains): " + method1_UsingArrays(nok)); // true
System.out.println("Method 2 (Disjoint): " + method2_UsingCollectionsDisjoint(nok)); // true
System.out.println("Method 3 (Java 8 Streams): " + method3_UsingJava8Streams(nok)); // true
// Nok tests
String[] nok2 = {"a", "", "c"};
System.out.println("Method 1 (Arrays - contains): " + method1_UsingArrays(nok2)); // true
System.out.println("Method 2 (Disjoint): " + method2_UsingCollectionsDisjoint(nok2)); // true
System.out.println("Method 3 (Java 8 Streams): " + method3_UsingJava8Streams(nok2)); // true
}