七叶笔记 » java编程 » Java数据结构顺序表的详细讲解

Java数据结构顺序表的详细讲解

写在前面

关于数据结构,Java官方其实已经帮我们写好并封装起来了,在真正需要使用的时候直接调用即可,但为了更好的理解数据结构,我会按照源码的思路写一个简化后的数据结构,默认接收的数据为int

1.线性表

线性表是多个具有相同特性的数据元素的序列,线性表在逻辑上是一条连续的直线,但在实际存储上却不一定

顺序表则是线性表的一种,是用一段物理地址连续的存储单元依次存储数据元素的线性结构,通常是使用数组来实现

2.顺序表的实现

新建一个类叫做ArrList,顺序表的底层是数组,所以类里面也要有数组,其次还需要一个计数器来判断数组目前使用的空间是多少,那么顺序表的框架就完成了

接下来就是顺序表的增删改查等操作了

2.1增加数据

增加数据有两个方法:末尾增加数据和任意位置增加数据

2.1.1尾部增加数据

在这之前需要进行的一项工作是判断顺序表的空间是否已满,如果空间已满的话需要进行扩容,判断顺序表空间是否已满的依据是计数器的值和数组的长度是否相等

2.1.2任意位置增加数据

任意位置添加数据的话首先要判断输入的值是否是合法的,有一点要注意:如果输入的值和计数器的值是相等的,那么此时就是在顺序表末尾添加数据,这个数是合法的

2.2查找数据

输入一个值,遍历顺序表进行查找,有则返回下标,没有返回-1

之所以返回值是int而不是boolean是因为后面的删除和修改数据的方法会使用到此方法

2.3删除数据

找到要删除的值的下标,从此处开始用后面的值对前面的值进行覆盖,最后将尾部的值改为0

2.4修改数据

修改指定位置的值,依旧首先要判断位置是否合法

最后是销毁顺序表,不需要吧数组进行销毁,否则下次使用的时候还需要再实例化一个对象,只需要让计数器为0即可

3.ArrayList

Java中的顺序表叫做ArrayList,这是一个泛型类,这个类继承了多个其它类以及接口,其中包括List接口,List提供了很多抽象方法,ArrayList实现此接口对这些方法进行重写

3.1ArrayList的实例化

ArrayList有三种构造方法

要说明的是:调用无参数构造方法,默认数组的大小为0,之后在调用里面的方法(比如add方法)的时候会有专门的扩容的方法将其扩容为10,之后如果数组满了的话扩容为之前的1.5倍(源码里面套的方法太多就不展示了)

3.2ArrayList常用的方法

最后的截取方法是在原数组上进行截取

到此这篇关于Java数据结构顺序表的详细讲解的文章就介绍到这了,更多相关Java顺序表内容请搜索七叶笔记以前的文章或继续浏览下面的相关文章希望大家以后多多支持七叶笔记!

相关文章