2015-10-04 28 views
1

,所以我有刪除0值陣列,並調整大小

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

你需要使用數組還是可以使用ArrayList? – MKreegs

回答

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>對於這樣的事情。