我想知道一个数组是否有一些空单元格和一些非空单元格。
例如,考虑大小为3的数组arr:
arr[0] = null;
arr[1] = "hello";
arr[2] = null;
这可能吗?
我怎么可能得到第一个非空的价值?
答案 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.
我怎么可能得到第一个非空值?
要获取第一个非空值,迭代数组(使用for
,for-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