java 集合(list、set、map)的特色

集合相关的类有一大堆,通常也只用到经常使用的方法增删改查,并且它它们的方法名也基本同样,因此一直都不知道何时用什么集合,android

今天趁有空特地从网上整理资料方便往后回忆。数组

1、List:、有顺序以线性方式存储,能够存放重复对象安全

线程安全方法:List list = Collections.synchronizedList(new LinkedList(...));数据结构

LinkedList:双向链表实现存储  索引数据慢插入数度较快  线程不安全(比安全性能好)性能

ArrayList:数组方式存储数据  索引数据快插入数据慢  线程不安全spa

Vector:数组方式存储数据  索引数据快插入数据慢  线程安全.net

Stack:继承自Vector,实现一个后进先出的堆栈线程

 

2、Set:无顺序,不包含重复的元素设计

HashSet:为快速查找设计的Set。存入HashSet的对象必须定义hashCode()。  对象

TreeSet: 保存次序的Set, 底层为树结构。使用它能够从Set中提取有序的序列。  

LinkedHashSet:具备HashSet的查询速度,且内部使用链表维护元素的顺序(插入的次序)。因而在使用迭代器遍历Set时,结果会按元素插入的次序显示。

 

3、Map:键必须是惟一

同步方法:Map m = Collections.synchronizedMap(new TreeMap(...));

Hashtable:基于散列表的实现  容许空键空值  线程安全

HashMap:基于散列表的实现  容许空键空值  线程不安全  (与Hashtable基本一致)

TreeMap: 基于红黑树数据结构的实现  不容许空键空值  线程不安全

WeakHashMap:改进的HashMap,它对key实行“弱引用”,若是一个key再也不被外部所引用,那么该key能够被GC回收。

在除须要排序时使用TreeSet,TreeMap外,都应使用HashSet,HashMap,由于他们的效率更高。

 

4、SparseArray<E>:采用了二分法方式存储数据(安卓的一个集合类)

android系统建议咱们用SparseArray<E>来代替HashMap<Integer, E>

SparseArray的使用基本与List同样,在些不详细解说,你们能够看http://blog.csdn.net/xyz_fly/article/details/793194

相关文章
相关标签/搜索