List接口
List集合特点:有序(有下标)可重复,可以通过下标遍历(循环)。
List接口特有、常用方法:
add(int index,Object o) //向集合指定位置添加元素,效率较低
get(int index) //通过下标获取元素
indexOf(Object o) //获取指定对象第一次出现的索引
lastIndexOf(Object o) //获取指定对象最后一次出现的索引
remove(int index) //根据下标删除元素
set(int index,E element) //修改指定位置的元素
ArrayList
默认初始化容量是:10(底层先创建一个·长度为0的数组,添加第一个元素的时候,容量为10)
集合底层是Object[ ]数组
ArrayList的自动扩容扩大到原来的1.5倍(例如:初始容量10,扩容一次后为15)
ArrayList集合的增删效率低,但是从末尾添加元素效率很高,检索即查找效率高。
注意:size()方法是获取集合元素个数,不是集合容量
所有集合中,使用率最高的集合时ArrayList集合
单向链表数据结构
单向链表的基本单元为“节点(Node)”,每一个节点都有两个属性:数据和下一个节点的地址。单向链表的末尾节点的属性是收据和null。
链表的优点:
随机增删元素时,不会有大量的元素位移,因此效率较高
链表的缺点:
每次查找查询都要从头节点开始寻找,直到找到为止,所有效率比较低
LinkedList
双向链表的节点有三个属性:上个节点的内存地址,数据和下个节点的内存地址
LinkedList没有初始化容量,LinkedList最初没有任何的元素,first和last都是null
Vector
底层也是一个数组,初始容量为10
Vector的自动扩容扩大到原来的2倍(例如:初始容量10,扩容一次后为20)
Vector中的方法都是线程同步的(线程安全),synchronized