删除数组中的0值并调整大小

时间:2015-10-04 21:56:16

标签: java

所以我有

int[] a = {0, 0, 0, 0, 4, 2, 3, 9};
int[] b = {0, 0, 0, 0, 0, 0, 1, 3};

如何获取它以便删除值为0的所有元素,并且每个数组都没有分配任何额外的不必要空间。

int[] a = {4, 2, 3, 9};
int[] b = {1, 3};

1 个答案:

答案 0 :(得分:2)

Java 8解决方案:

a = Arrays.stream(a).filter(v -> v != 0).toArray();

解决方案不需要Java 8:

int count = 0;
for (int i = 0; i < a.length; i++)
    if (a[i] != 0)
        a[count++] = a[i];
a = Arrays.copyOf(a, count);

但是,我认为最好的解决方案是使用ArrayList<Integer>来做这类事情。