删除数组元素,空指针问题

删除某些要求的数组元素,并将数组所有元素前移
判断数组元素是否为空,应该避免String类型为null,造成空指针的问题,可加入一个判断来避免String[index]为空的情况,也可用下面的"a".equals(strings[index])来避免空指针问题,且更加简便。
在这里插入图片描述

package com.javasm.array;

import java.util.Arrays;

/**
 * @author: JAVASM
 * @classNAME: ArrayDemo06
 * @description:
 * @date: 2021/3/29 20:54
 * @version:0.1
 * @since:1.8
 */
public class ArrayDemo06 {
    public static void main(String[] args) {

        //删除数组元素
        String[] strings = {"a", "b", "c", "a", "c", "a", "hello"};//正确结果为"b", "c", "a", "c", "a", "hello" null
        //[null,b,c,a]
        //删除数组里面所有的a元素  换成null
        //数组元素必须是连贯的  后面元素移动位置
        //第一层for循环用于遍历数组
        for (int index = 0, len = strings.length; index < len; index++) {
            if ("a".equals(strings[index])) {
                //如果当前的元素为要删除的元素,则后面元素依次移位
                //第二层for循环用于当有要删除的元素时,将后面的的元素全部向前移动
                for (int i = index; i < len - 1; i++) {
                    strings[i] = strings[i + 1];
                }
                //数组元素前移,前面的元素都被覆盖了,但是最后一个数组元素仅是移动了,移后数组元素的值依旧存在,因此需要置空
                strings[len - 1] = null;
                //当一个元素被删除后,后面的元素往前补充,则依旧需要从当前元素开始比较,但是循环外有index++,
                // 所以需要先index--,才能保证不错过检验前移的元素是否是需要删除的元素
                if ("a".equals(strings[index])) {
                    index--;
                }
            }
        }
        System.out.println(Arrays.toString(strings));
        //[null, b, null, hello, c, null, null]
    }
}
程序输出结果如下:
[b, c, c, hello, null, null, null]

Process finished with exit code 0
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值