数据结构之数组(新增)

作者: Jack_7eb5 | 来源:发表于2018-05-10 23:14 被阅读18次

    数组是数据结构中使用最多的一种,也是知道怎么用,要说出它的一些特性和方法就不清楚了,那什么是数组呢,简单的来讲数组就是把数据码成一排来存放,因为是紧挨着的一排,所以为每个元素提供了一个编号,从0开始,也就是我们常说的索引号。

    Java中的数组是静态的,也就是说数组的大小不会随着元素的变化而变化,数组中元素的获取,删除,修改,查询都很麻烦,不是很方便,为此我们封装了数组中常用的方法(增删改查)。

    首先我们为数组提供了两个私有属性,属性data表示数组,size表示数组中元素的个数,为什么提供这两个属性,首先属性data表示数组,而数组的大小可以使用data.length来获取,size表示数组中元素的个数,提供这个属性也是规范我们来使用数组,防止size大于data.length,小于0的情况。

    Array对象

    从上面的截图我们看到,我们为提供了两个构造函数,一个需要传递数组容量,一个默认设置成10,而这里的size我们设置成了0,为什么是0而不是data.length。这里的size表示的是数组有效的元素个数,这为我们后面提供动态数组提供方便。size在这里的作用不容小觑,尤其需要注意的是,这里的size并不表示索引号,如果要获取当前数组中最后一位元素,那么它的索引应该是size-1,接下来我们编写新增数组的方法

    添加元素方法

    这个方法相对而言就有点难度了,我们一一解释为什么这么写,原因何在?这里的add方法有两个功效,第一个是添加元素,第二个就是在指定位置上添加元素,我们将这两个功能合并为一个功能。这为我们封装addFirst,addLast带来便捷。 

    首先我们添加的index应该不小于0,不大于size,一开始我认为应该不大于等于size,如果index等于size,有可能index已经大于数组的边界了,但是后面有size==data.length判断在做掩护,所以不会出现这样的情况。如果我们把index>size 设置为index>=size,  永远都会抛出IllegalArgumentException异常,所以这里应该是index>size

    第二if(size==data.length)表示元素的个数超出了数组的容量,后期我们会为数组扩容,也就是数组的大小是可以自动变化的,这里我们的数组大小还是固定不变的。

    第三for(int i=index; i<size-1; i++), 这个循环的目的是将索引号为index位置及以后的元素都往后移动一位,比如现在的数组是[1,2,3,4,5],index等于2,e为-1,那么for操作后就变为[1,2,3,3,4,5],你会看到元素变大一位,这也就是为什么size会加1的元素,而index换成我们提供的e,结果就是[1,2,-1,3,4,5]。 重点是for中的起始位置,起点可以index,也可以是index-1; 终点可以是size-1, 也可以是size,最后不要忘记设置data[index]=e。

    for的两种写法

    上面我们提到add方法可以提供两个addFirst(),addLast()方法,addFirst方法在数组第一个位置添加元素,addLast方法在数组中的最后一个位置添加元素,具体如下:

    首位和末尾添加元素

    提供的这两个方法可以方便的在数组首尾添加元素,如果add不可以根据位置来添加元素,是不可以实现这步操作的。

    上面我们实现了数组的新增方法,接下来的我们将讲解数组中的删除方法

    相关文章

      网友评论

        本文标题:数据结构之数组(新增)

        本文链接:https://www.haomeiwen.com/subject/uiztdftx.html