最近有时间,重新啃一遍集合,提升代码质量,招聘必备,粗略总结,持续更新!!!
贴链接:http://www.360doc.com/content/12/0717/15/7662927_224736595.shtml
http://skyuck.iteye.com/blog/526358
集合框架接口
Collection
蓝色为接口,红色常用实现类
Collection
|_____
Set(
HashSet,LinkedHashSet)
| |_____
SortedSet(
TreeSet)
|_____
List(
LinkedList,ArrayList)
Set:
不能包含重复的元素,子接口SortedSet是一个按照升序排列的元素的Set。
List:
可以包含重复的元素,是一个有序的集合,提供了按索引访问的方式,有次序,位置不改变。
Iterator迭代器。
ArrayList
集合元素可以重复,可以存在多个null;
可以保持元素插入的顺序;
是用数组实现的,读取速度快,插入与删除速度慢(因为插入与删除时要移动后面的元素),适合于随机访问;
不是同步的,非线程安全;
LinkedList
集合元素可以重复;
可以保持元素的插入顺序;
双向链表来实现,删除与插入速度快,读取速度较慢,因为它读取时是从头向尾(如果节点在链的前半部分),或尾向头(如果节点在链的后半部分)查找元素。因此适合于元素的插入与删除操作;
不是同步的,非线程安全;
HashSet
集合元素不能重复,可以是null;
不保证元素的排列顺序;
不是同步的,非线程安全;
LinkedHashSet
集合元素不能重复,可以是null;
使用链表维护元素顺序,遍历集合时,会以元素的添加顺序访问集合元素;
不是同步的,非线程安全;
Iterator迭代器访问时性能比HashSet好,元素插入的性能稍次;
TreeSet
集合元素不能重复,不可以是null;
SortedSet接口的唯一实现类;
确保集合元素处于排序状态;
不是同步的,非线程安全;
排序的方式两种:自然排序(默认升序)
定制排序:实现Compartor接口的 int compare(T o1,T o2);方法
Map
蓝色为接口,红色常用实现类
Map(
HashMap,LinkedHashMap)
|_____
SortedMap(
TreeMap)
Map:
存储的是key-value对,不能包含重复的key,可以有重复的value。
SortedMap:
是一个按升序排列key的Map。
- 1.键集:Set<k> KeySet()
- 2.值集:Collection<k> values()
- 3.键值对集:Set<Map.Entry<k,v>> entrySet()
HashMap
允许一个null键与多个null值,若重复键,则覆盖以前值;
HashMap比TreeMap快;
不是同步的,非线程安全;
LinkedHashMap
允许一个null键与多个null值,若重复键,则覆盖以前值;
保存了元素的插入顺序;
不是同步的,非线程安全;
TreeMap
不允许null键,但允许多个null值,覆盖已有键值;
用键的整体顺序对元素排序,并将其组织成搜索树;
不是同步的,非线程安全;
WeakHashMap
与垃圾回收有关
遗留集合
均为线程安全的
Hashtable
实现Map接口,整体与HashMap类似;
Hashtable是线程安全的,写入时比较慢;
不允许空值和空键;
Vector
实现List接口,整体与ArrayList类似;
线程安全的,性能比较慢;
工具类Collections和Array
这两个类提供了封装器实现(Wrapper Implementations)、数据结构算法和数组相关的应用。
sort:排序,这里是一种类似于快速排序的方法,效率仍然是O(n * log n),但却是一种稳定的排序方法。
reverse:将线性表进行逆序操作。
rotate:以某个元素为轴心将线性表“旋转”。
swap:交换一个线性表中两个元素的位置。
……
Collections还有一个重要功能就是“封装器”(Wrapper),它提供了一些方法可以把一个集合转换成一个特殊的集合,如下:
unmodifiableXXX:转换成只读集合,这里XXX代表六种基本集合接口:Collection、List、Map、Set、SortedMap和SortedSet。如果你对只读集合进行插入删除操作,将会抛出UnsupportedOperationException异常。
synchronizedXXX:转换成同步集合。
singleton:创建一个仅有一个元素的集合,这里singleton生成的是单元素Set,singletonList和singletonMap分别生成单元素的List和Map。