特定の位置にある特定の要素が空であるかどうかを確認しようとしている場合 ( と異なるだけ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
、2 つのコレクションに共通の要素があるかどうかを確認することもできます。
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
}