繁体   English   中英

如何检查数组是否为空或数组内容是否为空

[英]How to check if array is null or if the array contents are null

什么是检查数组是最好的方式null值,或者如果数组内容是null的组合在Java 6中1个语句:

if ((myArray[0] != null) || (myArray[1] != null) || (myArray!= null)) {
    ...
}

首先,检查数组本身是否不为null 如果数组为null ,则没有理由对其元素进行迭代,因为Java在访问它时将抛出NullPointerException

if (myArray != null) {
    // ...
}

然后在条件主体内部遍历其所有元素,并检查其中之一是否为null

boolean hasNull = false;
for (int i=0; i<myArray.length; i++) {
    if (myArray[i] == null) {
        hasNull = true;
        break; // to terminate the iteration since there is no need to iterate more
    } 
}

这种单行解决方案(感谢@Napstablook的警告)。 条件被评估为true ,如果数组本身是null或它的元件之一是null

if !(myArray != null && myArray[0] != null && myArray[1] != null) { ... }

请注意, &&运算符的作用是,如果左侧被评估为false ,则它将停止评估其余条件,因为它不会影响结果。 || 但是true 但是,我建议您避免这种解决方案,因为索引可能会溢出。 最好使用上面提到的for-loop

为了让它检查任何值,我将使用allMatch 首先检查数组!= null也很重要,否则,将得到Exception。

if (array == null || Arrays.stream(array).allMatch(Objects::isNull)) 

请注意,这不适用于版本8之前的Java,在我发布答案后,OP编辑了他的要求

检查数组是否为空:

String array[] = null;
if (array == null) {
  System.out.println("array is null");
}

检查数组是否为空:

array = new int[0];
if (array.length == 0) {
  System.out.println("array is empty");
}

同时检查null:

int[] array = ...;
if (array.length == 0) { } // no elements in the array

if (array == null || iarray.length == 0) { }

尝试这个

 if (myArray == null || Arrays.stream(myArray).allMatch(element-> element==null)) {}

编辑-对于Java 6,我真的看不到这一行。 如果不需要一行,可以尝试一下

  boolean isNull = true;
    if(myArray==null){
        System.out.println("array is null");
    }else{
        for(Integer element: myArray){
            if(element!=null){
                System.out.println("array is not null");
                isNull=false;
                break;
            }
        }
        if(isNull)
            System.out.println("Array is null");
    }

例如这个

boolean isNullOrContainsNull = array == null || Arrays.asList(array).contains(null);

在一行中检查数组是否为null或包含null元素

如果要检查数组为空还是空或所有元素都为空,请执行

boolean containsNothingUseful = array == null
        || array.length == 0
        || !new HashSet<String>(Arrays.asList(array))
            .retainAll(Arrays.asList((String)null));

(假设一个String[]数组)

使用Collection#retainAll()方法,该方法在存在其他值(即与“ containsOnly”相反Collection#retainAll()时返回true

使用这种衬里实​​际上实际上是效率低下的,更好的方法是使用如下所示的方法,该方法不会创建大量的临时对象和变异集合等。

public static boolean containsNothingUseful(String[] array) {
    if (array == null || array.length == 0)
        return true;
    for (String element : array) {
        if (element != null)
            return false;
    }
    return true;
}

// ...
if (containsNothingUseful(myArray)) { .. }

代替Itreating Manullay数组,在这种情况下重新使用现有的集合。

  1. 将数组转换为列表
  2. 检查null是否存在于列表中或不使用contains()方法;

请找到示例代码:

public static void main(String[] args) {
        Integer[] array = new Integer[3];

        array[0] = 1;
        array[1] = null;
        array[2] = 2;

        System.out.println(Arrays.asList(array).contains(null));
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM