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。
版权声明: 本文为 InfoQ 作者【杨鹏Geek】的原创文章。
原文链接:【http://xie.infoq.cn/article/3aab9c34968858e87df4bdb56】。文章转载请联系作者。
评论