collection的子接口list
ArrayList
Vector
LinkedList
1.list接口
collection的子接口list
复习一下;list特点:
有序,有下标,可重复
list的使用
a.创建集合
List list=new ArrayList();
添加元素:
list.add();
b.遍历(和collection不太一样)
可以使用for循环(因为list有下标)
也可使用增强for循环(因为list属于collection的子接口)
迭代器
使用listiterator迭代器(比iterator迭代器功能多)
一个简单的迭代器遍历的语句例子:
先判断在取值;
while(list.hasNext()){
list.next();
}
2.ArrrayList
本质:数组结构实现,查询快,增删慢
效率快,非线程安全
a.ArrayList的使用
默认容量为10;//若没有向集合中添加容量则为0;(了解就可以,知道有一个默认容量)
每次扩容是原来的1.5倍
3.Vector:
同样数组结构实现,查询快,增删慢
效率低,线程安全
4.LinkedList
和上面结构不一样
链表结构实现,增删快,查询慢
理解一下基础的数组和链表的区别:
数组的元素是连续的,
当数组要插入或者删除元素时,假如在第三号下标插入,则后面的整体都要
向后移动,删除则整体向前移动。
数组的长度还是固定的,若插入元素则需要先判断是否需要扩容。
数组查询可定位下标,查询快
链表空间不连续。
链表的增删则比较简单,如果要增加或者删除时则需要将节点的指针改一下
既可以,所以增删比较快,
查询的话需要一个节点一个指针指下一个节点,查询起来比较慢。