数组中的空单元格和非空单元格

时间:2013-10-04 17:46:18

标签: java arrays

我想知道一个数组是否有一些空单元格和一些非空单元格。

例如,考虑大小为3的数组arr:

arr[0] = null;
arr[1] = "hello";
arr[2] = null;

这可能吗?

我怎么可能得到第一个非空的价值?

2 个答案:

答案 0 :(得分:4)

  

我想知道阵列是否可以有一些空单元格和其他一些单元格   非空的细胞。

如果数据类型扩展为Object,那么您可以。否则,如果它是原始数据类型,那么不,你不能。

<强> E.g:

Object[] arr = new Object[3];
arr[0] = null; // This is allowed.

int[] arr1 = new int[3];
arr1[0] = null; // This is NOT allowed.

  

我怎么可能得到第一个非空值?

要获取第一个非空值,迭代数组(使用forfor-each循环,它的愿望),并保持循环直到当前元素为null 。一旦遇到not-null元素,就得到它并摆脱循环。

答案 1 :(得分:1)

  

我想知道数组是否有一些空单元格和其他一些非空单元格?

如果是空单元格,则表示包含null的单元格,然后是。在创建对象数组时,默认情况下会填充null个,并且在填充其他值时,它处于有一些空值和一些非空值的状态。


  

我怎么可能得到第一个非空值?

你可以创建像这样的方法

public static <T> T firstNonEmptyValue(T[] array){
    for(T element : array){
        if (element != null)
            return element;// return first element that is not null
    }
    // if we are here it means that we iterated over all elements 
    // and didn't find non-null value so it is time to return null
    return null;
}

用法

String[] arr = new String[] { null, "hello", null, "world", null };

System.out.println(firstNonEmptyValue(arr));//output: hello
System.out.println(firstNonEmptyValue(new String[42])); // output: null since array
                                                        // contains only nulls