20《重学JAVA》--集合(二)
一、List集合
List集合中的元素是有序的,可以重复出现,List中主要有ArrayList、LinkedList两个实现类;
在Collection中,List集合是有序的,我们可对其中每个元素的插入位置进行精确地控制,可以通过索引来访问元素,遍历元素。
二、ArrayList
ArrayList底层通过数组实现,随着元素的增加而动态扩容,线程不安全集合。
ArrayList继承于AbstractList,实现了List,RandomAccess,Cloneable,Serializable接口。
1. ArrayList实现于List,得到了List集合框架基础功能;
2. ArrayList实现于RandomAccess,能够快速随机访问存储元素的功能,RandomAccess是一个标记接口,没有任何方法;
3. ArrayList实现于Cloneable,得到了clone()方法,可以实现克隆功能;
4. ArrayList实现于Serializable,可以被序列化,通过序列化去传输,典型的应用就是hessian协议。

ArrayList特性:
1. 容量不固定,随着容量的增加而动态扩容
2. 有序集合(插入的顺序==输出的顺序)
3. 插入的元素可以为NULL
4. 增删改查效率更高
5. 线程不安全
ArrayList操作
get(intindex):返回List集合中指定位置的元素。
set(intindex,Objectelement):用指定元素替换List集合中指定位置的元素。
add(Objectelement):在List集合的尾部添加指定的元素。
add(intindex,Objectelement):在List集合的指定位置插入指定元素。
remove(intindex):移除List集合中指定位置的元素。
remove(Objectelement):如果List集合中存在指定元素,则从List集合中移除第一次出现的指定元素。
clear():从List集合中移除所有元素。
判断元素isEmpty():判断List集合中是否有元素,没有返回true,有返回false。
contains(Objectelement):判断List集合中是否包含指定元素,包含返回true,不包含返回false。
查询元素indexOf(Objecto):从前往后查找List集合元素,返回第一次出现指定元素的索引,如果此列表不包含该元素,则返回-1。lastIndexOf(Objecto):从后往前查找List集合元素,返回第一次出现指定元素的索引,如果此列表不包含该元素,则返回-1。
iterator():返回迭代器(Iterator)对象,迭代器对象用于遍历集合。
size():返回List集合中的元素数,返回值是int类型。
subList(intfromIndex,inttoIndex):返回List集合中指定的fromIndex(包括)和toIndex(不包括)之间的元素集合,返回值为List集合。
三、LinkedList
LinkedList是一个双向链表,每一个节点都拥有指向前后节点的引用。
LinkedList特性
它继承AbstractSequentialList,实现了List,Deque,Cloneable,Serializable接口。
1. LinkedList实现List,得到了List集合框架基础功能;
2. LinkedList实现Deque,Deque是一个双向队列,也就是既可以先入先出,又可以先入后出,说简单些就是既可以在头部添加元素,也可以在尾部添加元素;
3. LinkedList实现Cloneable,得到了clone()方法,可以实现克隆功能;
4. LinkedList实现Serializable,表示可以被序列化,通过序列化去传输,典型的应用就是hessian协议。

LinkedList操作
booleanadd(Objectelement):将元素添加在链表的最后
booleanadd(intindex,Objectelement):将元素添加在指定位置后面
booleanaddFirst(Objectelement):将元素添加在链表的第一个元素的位置
booleanaddLast(Objectelement):将元素添加在链表最后
Eget(intindex):获取索引处的元素
EgetFirst():获取第一个元素
EgetLast():获取第最后一个元素
Eremove():移除链表中第一个元素
booleanremove(Objecto):移除链表中指定的元素
Eremove(intindex):移除链表中该索引处的元素
EremoveFirst():移除链表中第一个元素
EremoveLast():移除链表中最后一个元素
voidpush(Ee):与add()效果一样
Epop():与remove()效果一样
Epoll():查询并移除第一个元素
voidclear():清空集合里的所有元素
Objectclone():复制一个集合
booleancontains(Objectobject):判断集合是否包含指定元素
indexOf(Objecto):返回此列表中首次出现的指定元素的索引,如果此列表中不包含该元素,则返回-1。
lastIndexOf(Objecto):返回此列表中最后出现的指定元素的索引,如果此列表中不包含该元素,则返回-1。