专栏首页wfaceboss封装数组之添加元素

封装数组之添加元素

在上一小节中,我们对数组进行了一个基本的封装,该小节中,我们在上一次基础上,新增往数组添加元素的方法:

1.向所有元素后添加一个元素

思路:

(1)先判断当前数组容量是否已满,未满则转入(2),否则抛出异常

(2)在元素下标为size的位置插入新元素

(3)维护我们的size值

  //向所有元素后添加元素
    public void addLast(int e) {
        if (size == data.length)
            throw new IllegalArgumentException("数组已满");

        data[size] = e;

        size++;
    }

2.在指定index位置插入一个新元素

思路:

(1)先判断当前数组容量是否已满,未满则转入(2),否则抛出异常

(2)判断当前需要插入值的位置是否合理,合理则转入(3),否则抛出位置不合法异常

(3)将index之后的元素依次往后移动一位,然后将新元素插入到index位置

(4)维护我们的size值

  //在第index个位置插入一个新元素
    public void add(int index, int e) {
        //(1)先判断当前数组容量是否已满,未满则转入(2),否则抛出异常
        if (size == data.length)
            throw new IllegalArgumentException("数组已满");

        //(2)判断当前需要插入值的位置是否合理,合理则转入(3),否则抛出位置不合法异常
        if (index < 0 || index > size)
            throw new IllegalArgumentException("您选择的位置不合法");


        //将index位置之后的元素往后依次移动一位
        for (int i = size - 1; i >= index; i--) {
            //(3)将index之后的元素依次往后移动一位,然后将新元素插入到index位置
            data[i + 1] = data[i];
         }
            data[index] = e;
            
            //(4)维护size值
            size++;
    }

通过对在指定index位置插入一个新元素方法的编写,此时我们可以很轻松的编写出在所有元素之前添加一个新元素,

3.在所有元素之前添加一个新元素

 //在所有元素之前添加一个新元素
    public void addFirst(int e) {
        add(0, e);//0表示第一个位置
    }

我们还可以对在本节刚开始编写的第一个方法进行改写,改写如下:

 //向所有元素后添加元素
    public void addLast(int e) {
        add(size, e);//size表示此时的最后一个元素
    }

到此我们对如何在数组中添加一个元素有了基本的认识,在下一节中我们就如何在数组中查询元素和修改元素进行学习。

若你感兴趣,关注我,我们一起学习~~~~

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 封装数组之动态数组实现

    前言:在此之前,我们封装的数组属于静态数组,也即数组空间固定长度,对于固定长度的数组当元素超过容量时会报数组空间不足。为了能更好的使用数组,我们来实现一个可以自...

    wfaceboss
  • 均摊复杂度和防止复杂度的震荡

    关于上一节中我们对添加操作的时间复杂度归结为O(n)是考虑了扩容操作(resize)在内的。就addLast(e)操作而言,时间复杂度为O(1),在考虑最坏情况...

    wfaceboss
  • 封装数组之改进为泛型数组

    前言:通过上一节我们对我们需要封装的数组,进行了基本的增删改查的封装,但只局限于int类型的操作,为了能提供多种类型数组的操作,我们可以将其进一步封装为泛型数组...

    wfaceboss
  • 封装数组之动态数组实现

    前言:在此之前,我们封装的数组属于静态数组,也即数组空间固定长度,对于固定长度的数组当元素超过容量时会报数组空间不足。为了能更好的使用数组,我们来实现一个可以自...

    wfaceboss
  • [Leetcode][python]Permutation Sequence/第k个排列

    来自:http://www.cnblogs.com/zuoyuan/p/3785530.html 我采用的方法是计算第k个Permutation。 假设...

    后端技术漫谈
  • easyswoole实现在线聊天室功能

    一 : 安装easyswoole,可参考http://www.php20.cn/article/82

    仙士可
  • 加快 Vue 项目的开发速度

    Webpack是实现我们前端项目工程化的基础,但其实她的用处远不仅仅如此,我们可以通过Webpack来帮我们做一些自动化的事情。首先我们要了解require.c...

    grain先森
  • 资源 | ChainerCV:基于Chainer的深度学习计算机视觉实用库(内含工具集)

    选自GitHub 作者:二井谷勇佑(Yusuke Niitani) 机器之心编译 参与:黄小天、蒋思源 近日,Preferred Networks 通过其研究博...

    机器之心
  • EasyNVR调取接口在web页实现多通道同时直播

    EasyNVR能够通过简单的网络摄像机通道配置,将传统监控行业里面的高清网络摄像机IP Camera、NVR等具有RTSP协议输出的设备接入到EasyNVR,E...

    EasyNVR
  • Python结合jquery Ajax 的实例

    jQuery对Ajax的操作进行了封装。jQuery中.ajax()属于最底层的方法。 先来看一个简单的例子:

    赵云龙龙

扫码关注云+社区

领取腾讯云代金券