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

时间:2016-01-25 02:06:56

标签: java arrays for-loop range assign

我正在尝试从一个数组中获取某些元素,如果它们符合特定条件并按顺序将它们分配给另一个数组。例如:

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

(就array2的长度而言,我创建了一个单独的for循环,遍历array1 - 如果array1中的元素符合条件,array2.length ++。那么我将初始化array2,一个array1已完全迭代通过。)< / p>

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

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

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

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

2 个答案:

答案 0 :(得分:2)

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

对于数组大小问题,我会使用ArrayList。 您可以在动态增长时向其添加元素。 这甚至允许您添加而无需上述索引变量。

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

答案 1 :(得分:1)

你可以通过将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);
    }
}