Java集合类总结

最近有时间,重新啃一遍集合,提升代码质量,招聘必备,粗略总结,持续更新!!!
贴链接: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。

你可能感兴趣的:(java,数据结构)