本文介绍了从数组中删除所有零的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个数组:

[0, 5, 6, 0, 0, 2, 5]

我想从中删除所有零,以便返回(保持相同的顺序):

I would like to remove all zeros from it, so that this returns (keeping the same order):

[5, 6, 2, 5]

有没有比以下更简单的方法来删除所有零?

Is there any easier way to remove all zeros than the following?

int[] array = {0, 5, 6, 0, 0, 2, 5};
        int len = 0;
        for (int i=0; i<array.length; i++){
            if (array[i] != 0)
                len++;
        }
        int [] newArray = new int[len];
        for (int i=0, j=0; i<array.length; i++){
            if (array[i] != 0) {
                newArray[j] = array[i];
                j++;
            }
        }

我在 Arrays 类中找不到任何方法,而且 Google/SO 搜索也没有给我任何好的答案.

I haven't been able to find any method in the Arrays class, and Google/SO searches didn't give me any good answers.

推荐答案

这是在代码中显示它比用简单的英语解释更容易的罕见情况之一:

This is one of those rare cases where it is easier to show it in code than to explain in plain English:

int targetIndex = 0;
for( int sourceIndex = 0;  sourceIndex < array.length;  sourceIndex++ )
{
    if( array[sourceIndex] != 0 )
        array[targetIndex++] = array[sourceIndex];
}
int[] newArray = new int[targetIndex];
System.arraycopy( array, 0, newArray, 0, targetIndex );
return newArray;

这篇关于从数组中删除所有零的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-22 00:32