如何将一个数组中的特定元素分配给另一个数组?

How do I assign specific elements from one array into another array?

我正在尝试从一个数组中取出满足特定条件的某些元素,然后按顺序将它们分配给另一个数组。例如:

int[] array1 = {1,2,3,4,5}
int[] array2 = {}

(根据 array2 的长度,我创建了一个单独的 for 循环来遍历 array1 - 如果 array1 中的元素满足条件,array2.length++。然后我将初始化 array2 一个 array1完全迭代。)

假设只有 array1[1],[3],[4] 符合条件,所以我希望将它们转移到 array2。

到目前为止我已经这样做了:

for (iterate through array1) {
   if (array1[i] meets criterion) {
      a[i] = b[i];
   }
}

我想做 a[i] = b[i],但是如果索引是,比方说,4,b[] 没有索引 4。我该怎么做才能确保 array[ 1],[3],[4] 将按顺序分配给 array2 - array[1] = array2[0], array1[3] = array2[1], array1[4] = array2[2]?

使用索引变量与您的新数组一起使用。 使用值 0 创建它,并在您向数组添加值时增加它。

对于数组大小的问题,我会使用ArrayList。 您可以在它动态增长时向其中添加元素。 这甚至允许您在不需要上述索引变量的情况下进行添加。

List<Integer> list = new ArrayList<>();
for (int value : array1) {
   if (value meets criterion) {
      list.add(value);
   }
}

您可以通过将 array2 设置为与 array1 相同的大小来实现,这样在最好的情况下,array1 中的所有内容都将包含在 array2 中。

int[] array1 = {1,2,3,4,5};
int[] array2 = new int[array1.length];

int j = 0;

for (int value : array1) {
    if (approved(value)) {
        array2[j++] = value;
    }
}

如果数组足够大并且 array1 中很少有元素真正符合您的标准,这可能会很糟糕。在这种情况下,让内存根据需要增长以适应元素会更好。您可以为此使用 ArrayList:

List<Integer> array2 = new ArrayList<>();
for (int value : array1) {
    if (approved(value)) {
        array2.add(value);
    }
}