Java数据结构——4.顺序表(ArrayList)《干货笔记》
·
目录
ArrayList是实现了List接口的类
ArrayList是Java中的顺序表
知识区
集合框架中的ArrayList

1. ArrayList是以泛型方式实现的,使用时必须要先实例化
2. ArrayList实现了RandomAccess接口,表明ArrayList支持随机访问
3. ArrayList实现了Cloneable接口,表明ArrayList是可以clone的
4. ArrayList实现了Serializable接口,表明ArrayList是支持序列化的
5. 和Vector不同,ArrayList线程不安全,单线程下可用, 多线程中可选Vector或CopyOnWriteArrayList
6. ArrayList底层是一段连续的空间,并且可以动态扩容,是一个动态类型的顺序表
ArrayList的构造

ArrayList的使用

ArrayList的遍历

1.for循环+下标
2.foreach
3.使用迭代器
ArrayList的扩容机制

解析:部分方法(扩容机制)内部源码分析(了解)
总结:
1. 检测是否真正需要扩容,如果是调用grow准备扩容
2. 预估所需大小:初步预估按1.5倍扩容—>超过1.5倍大小,按照用户所需大小扩容 扩前检测,防止太大导致扩容失败
3. 用copyOf扩容
面试题

题目:str1: welcome to bit str
2: come
删除str1中出现的所有str2的字符
删除之后的结果:w l t bit
要求结果放在集合list中
答:👆
ArrayList的应用:简单的洗牌算法
运行结果

杨辉三角

模拟实现
自定义异常
位置不合法异常

为空异常

接口

类型定义

插入(尾插)

指定位置插入

思路:
1.检查要插入的位置是否合法
2.判满:满了扩容
3.挪元素:pos之后的全往后挪 4.往pos放值
检查插入位置

检查插入位置给(get用)

扩容

用到了引入的包Array
查找
查找是否有该元素

查找该元素所在位置

获取指定位置元素

更新

删除

思路:
1.判空
2.获取该值的位置——>不合法直接返回
3.后面的往前挪,将其覆盖掉=删除
求长度

清空

打印

判满

判空

为空异常

更多推荐

所有评论(0)