从双向链表索引位置创建数组

时间:2019-02-10 16:54:00

标签: java

我对我们的一项旧考试任务有疑问。 任务是 “方法位置应返回一个字段,该字段应准确包含列表中内容为空的那些元素的位置。如果没有此类元素,则返回长度为0的字段”

代码以:

开头
public int[] positions() {
    int[] result = new int[0];

当我尝试解决没有问题的问题时,由于“ new int [0]”,我一直坚持不懈,我设法获得了一些结果。但是我不知道该如何做。

1 个答案:

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