我对我们的一项旧考试任务有疑问。 任务是 “方法位置应返回一个字段,该字段应准确包含列表中内容为空的那些元素的位置。如果没有此类元素,则返回长度为0的字段”
代码以:
开头public int[] positions() {
int[] result = new int[0];
当我尝试解决没有问题的问题时,由于“ new int [0]”,我一直坚持不懈,我设法获得了一些结果。但是我不知道该如何做。
答案 0 :(得分:0)
请稍等一下代码在这里的作用。
int[] result = new int[0];
创建一个空的,固定长度的原始数组。此数组无法进一步扩展。
您的考试任务将翻译为(在很大程度上简化):
public int[] positions(final Object[] objects) {
// Initialize the array with the max possible size, which is the input array size
final int[] positions = new int[objects.lenght];
int j = 0;
for (int i = 0; i < objects.length; i++) {
if (objects[i] == null) {
// Assign the index of the null value to the holder array.
// Increment j, which is the index of the first free position in the holder array
positions[j++] = i;
}
}
// This will return a copy of the "positions" array, truncated at size j
return Array.copyOf(positions, j);
}