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

时间:2018-06-07 12:55:55

标签: java arrays nullpointerexception

在Java 6中的1个语句中,检查数组是否为list_urlquery = urlquery_partition.strip().split(",") for i in range(len(list_urlquery)): list_urlquery[i] = "(" + str(list_urlquery[i]).strip() + ", '" + str( file.filename).strip() + "," + str(PATH_ID).strip() + "')" insert_query = 'INSERT INTO tbl_ma (theid, thefilename, thepathid) VALUES %s' psycopg2.extras.execute_values(cursor, insert_query, list_urlquery, template=None, page_size=100) print (list_urlquery) 值或数组内容是null的最佳方法是什么:

null

6 个答案:

答案 0 :(得分:2)

首先,检查数组本身是否不是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

答案 1 :(得分:1)

要检查任何值,我会使用allMatch。首先检查数组!= null也很重要,否则你会得到一个Exception。

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

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

答案 2 :(得分:0)

检查Array是否为null:

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) { }

答案 3 :(得分: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");
    }

答案 4 :(得分:0)

例如这个

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

检查一行是否为数组为空或包含空元素

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

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

(假设String[]数组)

使用Collection#retainAll()方法,当存在其他值时返回true,即&#34; containsOnly&#34;

的倒数

使用这个衬里实际上是相当低效的,并且最好使用下面的方法,它不会创建大量临时对象和变异集合等。

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)) { .. }

答案 5 :(得分:0)

相反Itreating Manullay数组,重新使用现有的集合。

  1. 将数组转换为列表
  2. 使用contains()方法检查Null是否存在于列表中;
  3. 请找到示例代码:

    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));
        }