【List,ArrayList与顺序表】

2024-06-09 1245阅读

目录

1,什么是List

2,List的使用

3,线性表

4,顺序表

4.1 接口的实现

5, ArrayList简介

6,ArrayList的使用

6.1 ArrayList的构造方法

6.2 ArrayList的常见操作

 6.3 ArrayList的遍历

7,ArrayList的具体使用

7.1 简单的洗牌算法

7.2 杨辉三角

7.3 面试题

8,ArrayList的优缺点


1,什么是List

在集合框架中,List是一个接口,继承自Collection。

【List,ArrayList与顺序表】

Collection也是一个接口,继承自Iterable。

 

他的一些方法:

【List,ArrayList与顺序表】

Iterable是最顶层的一个接口

 

站在数据结构的角度来看,List就是一个线性表,即n个具有相同类型元素的有限序列,在该序列上可以执行增删改查以及变量等操作。

List中提供了好的方法,具体如下:(部分)

【List,ArrayList与顺序表】

2,List的使用

注意:List是个接口,并不能直接用来实例化。

如果要使用,必须去实例化List的实现类。在集合框架中,ArrayList和LinkedList都实现了List接口。

【List,ArrayList与顺序表】

3,线性表

线性表(linear list)是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表、链表、栈、队列...

线性表在逻辑上是线性结构,也就说是连续的一条直线。但是在物理结构上并不一定是连续的,线性表在物理上存储时,通常以数组和链式结构的形式存储。

4,顺序表

顺序表其实就是一个数组,数组本身是一块连续的内存

顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。在数组上完成数据的增删查改。  

4.1 接口的实现

对数组进行增删改查:

定义一个IList接口:

【List,ArrayList与顺序表】

定义MyArrayList类实现IList接口:

【List,ArrayList与顺序表】

定义一个测试类Test:

【List,ArrayList与顺序表】

接下来就对其接口里面的功能在重写方法里面一一完成:

1,新增元素,默认在数组最后新增

确定新增位置,只需要放到usedSize位置,usedSize+1即可。但是数据结构是一门非常严谨的学科,在这里我们还要判断数组是否已满!!!即在接口里面定义一个方法判断数组是否已满!

【List,ArrayList与顺序表】

重写这个方法,若usedSize等于数组长度,则满

【List,ArrayList与顺序表】

【List,ArrayList与顺序表】

2,在pos位置新增元素

从最后一个数据往后面挪,才能插入指定位置,所以定义一个下标i,i的起始位置是usedSize-1的位置,把i位置的值赋值给i+1,在i--,i=pos都要移动,再将需要插入的元素存入pos位置,usedSize++即可!!!但是要考虑pos位置是否合法,不能usedSize,若满了扩容。

【List,ArrayList与顺序表】

在MyArrayList类中写一个方法判断pos合不合法:

【List,ArrayList与顺序表】

若不合法,可抛出一个异常,则定义一个异常类:

【List,ArrayList与顺序表】

最终代码:

【List,ArrayList与顺序表】

3,判定是否包含某个元素(给一个数,查找数组中是否包含这个数)

查找次数不用把整个数组查找完,只需要查找usedSize次即可

【List,ArrayList与顺序表】

4,查找某个元素对应的位置

【List,ArrayList与顺序表】

5,获取pos位置的元素

在这种情况下,pos不能等于usedSize,pos合法的位置只要0~usedSize-1,其他都不合法!

即写一个方法来判断pos位置元素是否合法:

【List,ArrayList与顺序表】

【List,ArrayList与顺序表】

6,给pos位置的元素设为value—>相当于更新

首先检查pos位置的合法性,不能pos=usedSize,即可直接调用checkPosofGet方法,可将此方法名修改一下,以便观察与理解

【List,ArrayList与顺序表】

【List,ArrayList与顺序表】

7,删除第一次出现的关键字key 

可定义一个下标i,代表你要删的位置,让i+1的值赋值给i下标的值,然后i++,再让i+1的值赋值给前面的值,走到i

VPS购买请点击我

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

目录[+]