java集合

来源:互联网 发布:网络大电影受众人群 编辑:程序博客网 时间:2024/06/06 20:22

在集合框架中,有两个顶层的接口:

Collection和Map

Collection表示一组纯数据,Map表示一组key-value对。

单线程集合

一、Collection

Collection主要有List、Set、Queue三个接口

1、List

List按照插入的顺序排序,元素可以重复,继承Collection接口,实现类主要有ArrayList、Vector、LinkedList

(1)ArrayList

线程不安全,效率高速度快---查询速度快

使用变长数组算法实现的

在中间插入或删除一个元素意味着这个列表的其余元素都会移动,开销比较大

(2)LinkedList

采用双向循环链表实现

在中间插入或删除一个元素是固定的,效率比较高---增删速度快

还添加了可以使用栈、队列或双端队列的方法。能够直接实现栈(Stack)的所有方法

(3)Vector(过时)

线程安全,效率较低

使用变长数组算法实现的队列

ArrayList与Vector都是变长数组实现的

2、Set

Set元素不重复,主要实现类有HashSet、LinkedHashSet、TreeSet

(1)HashSet

存储方式:是只有一个key的HashMap实现的,散列函数

查询速度比较快

(2)LinkedHashSet

存储方式:基于LinkedHashMap实现

存储方式:散列函数

以插入顺序保存元素

(3)TreeSet

存储方式:基于TreeMap、实现方式是红-黑树数据结构

元素是排序状态

3、Queue

PriorityQueue:基于优先级的队列

二、Map

key-value的集合,key是唯一的,不重复,主要实现类有HashMap、HashTable、TreeMap、LinkedHashMap

(1)HashMap

非线程安全,不检查锁,快

不能保证随着时间推移,Map的元素顺序不变

(2)HashTable(过时)

线程安全,检查锁,比较慢

(3)TreeMap

已排好序的红-黑树实现

(4)LinkedHashMap


HashMap与HashTable区别

都实现了Map接口

HashMap是非synchronized的,线程不安全,key和value都可以是null,迭代器(Iterator)是fail-fast迭代器。

HashTable是synchronized的(慢),线程安全key和value都不能是null,迭代器(enumerator)不是fail-fast迭代器


注意:新程序中不应该使用过时的Vector、HashTable、Stack


并发集合

1、Lists

CopyOnWriteArrayList

list的实现每一次更新都会产生一个新的隐含数组副本,所以这个操作成本很高

2、Queues

LinkedBlockingDeque

3、Maps

ConcurrentHashMap

HashMap、HashTable、ConcurrentHashMap

ConcurrentSkipListMap


4、Sets

ConcurrentSkipListSet

CopyOnWriteArraySet


整理比较好的文章:http://blog.csdn.net/u013256816/article/details/50925091#comments


原创粉丝点击