1、List的API文档说明
A、List有两个,使用 java.util.List
集合所有相关API都在 java.util 包
B、父接口 --- Collection
实现类 --- ArrayList LinkedList Vector(面试)
C、有序的 ----- 存入和取出一致
有索引
存储重复元素(重复依据:equals判断为true视为重复)
可以存储 null 值,且null值有多个
D、方法
特点:继承了Collection的方法
拓展了一些方法:和索引相关
总结:
增
add(int index, E e) ---- 在指定索引处插入元素 e
删
remove(int index) ------ 删除指定索引元素
改
set(int index, E e) ---- 将指定索引处的元素修改为 e
查
get(int index) --------- 获取指定索引元素
特有遍历
for(int i = 0; i < 集合.size(); i++){
数据类型 e = 集合.get(i);
}
2、并发修改异常
A、如果遍历过程当中,同时有修改集合元素的操作,可能会抛出此异常
B、根据实际API,有的集合实现类会检测并抛出异常
但是,有的集合可能不会抛出异常
有或然性
C、建议,无论使用什么集合,保险起见,当做都会抛出并发访问异常即可
3、数据结构
堆栈 ----- 先进后出
队列 ----- 先进先出
链表结构 -- 看图
4、LinkedList
LinkedList底层使用的双向链表,双向链表特点:
可以从前向后查询,也可以从后向前查询
因此LinkedList提供了一个特有的方法,这些特有的方法是关于首尾操作的
5、使用LinkedList实现堆栈与队列结构
实现方案有多种:
以队列为例:
方案1:可以使用之前遍历集合的方式 ---- 只是获取,不移除
方案2:声明变量接收长度
for 循环 {
调用 removeFirst 方法
移除并且获取第一个元素
}
方案3:
while(!集合.isEmpty()){
调用 removeFirst 方法
}
实现堆栈与实现队列思路一样
6、JDK 1.0 时,只有一个集合API
Vector,Vector实现和ArrayList基本一样
后期出于编码风格和效率(后面多线程再将)考虑,使用ArrayList替换了Vector
以后使用ArrayList 不用 Vector,但是Vector会在一些老的代码,面试题中遇到
|