继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

删除数组中的某个(多个)元素(分别用数组和集合的办法删除)

玄鉴
关注TA
已关注
手记 96
粉丝 237
获赞 4217

一个数组{11,22,1,33,1,1,44,55,66,1,77,1,1,88}
要求将其中为1的元素值给去掉,通过合适的代码得到如下的新数组
{11,22,33,44,55,66,77,88}

在群里遇到了这个问题,开始觉得很简单,因为有集合啊。不过突然想到如果单独用数组解决的话,就有点难度了,特别是1不止一个。

用数组的时候还纠结于怎么定义新的数组的长度,后来被人提醒才明白。根本不用管它,只要不小于原来的数组,使他盛不下新的数组,导致数组越界就行。

在输出的时候再解决它。

使用集合的方法:

public static void main(String[] args) {

        int a[]={11,22,1,33,1,1,44,55,66,1,77,1,1,88};

        List list =new ArrayList();

        for (int i = 0; i < a.length; i++) {

            if (a[i]!=1) {

                list.add(a[i]);
            }

        }

        for (Object object : list) {
            System.out.print(object+" ");
        }
        }

这个简答,不必细说。

先说下我开始的代码:

int a[]={11,22,1,33,1,1,44,55,66,1,77,1,1,88};

        int c[]=new int[a.length];

        int i=0;
        int count=0;
        for (int aa:a) {
            if (aa!=1) {

                c[i]=aa;
                i++;

            }           
        }

        for ( i = 0; i < c.length; i++) {
            System.out.print(c[i]+",");
        }

这样的结果 11,22,33,44,55,66,77,88,0,0,0,0,0,

多了几个0.

怎么把0去掉。

添加一个变量,约束新的数组输出。

int a[]={11,22,1,33,1,1,44,55,66,1,77,1,1,88};

    int c[]=new int[a.length];

    int i=0;
    int count=0;
    for (int aa:a) {
        if (aa!=1) {

            c[i]=aa;
            i++;
            count++;
        }           
    }

    for ( i = 0; i < count; i++) {
        System.out.print(c[i]+",");
    }

不知道这算不算投机。没有实现新的数组,只是实现了数值的输出。

那如果数组需要删除你多个不同元素呢?

比如:

int a[]={11,22,1,33,1,1,44,2,2,55,3,66,1,77,1,1,88};

删除数组中的1,2,3、很简单,只需要修改if()条件就行。
if (aa!=1&&aa!=2&&aa!=3)
具体的就不写了。

打开App,阅读手记
5人推荐
发表评论
随时随地看视频慕课网APP

热门评论

count和c[]同时进行的,没有办法把数组诺后,除非两次for循环,那就没有必要了。

先获取count再定义C[i]长度,最后把≠1的数存入C[i]

查看全部评论