Java中容器类之Collection和Map浅谈

一、Collection

一个独立元素的队列,这些元素都服从一条或多条规则。List必须按照插入顺序保存元素;Set不允许有重复元素;Queue按照队列规则来确定对象产生顺序,只能从一端插入对象,并从另一端移除对象。

1、List

ArrayList和LinkedList都是List类型,他们都是按照插入的顺序保存元素,两者的不同是执行某些操作的性能。ArrayList内部实现可变数组,查找元素快,插入删除元素慢。LinkedList内部实现链表,插入删除元素快,查找元素慢。

Stack(栈)是后进先出的容器,LinkedList可以实现栈的所有功能,因此可以使用LinkedList作为Stack使用。

2、Set

HashSet、TreeSet、LinkedHashSet都是Set类型。HashSe使用了散列函数,查找元素快,元素存储顺序随机;TreeSet使用红黑树的数据结构,按照比较结果的升序保存对象;LinkedHashSet因为查询速度也是用了散列,但是它也是用了链表来维护元素的插入顺序,按照被添加的顺序保存对象。

3、Queue

队列是先进先出的容器,在并发编程中特别重要。LinkedList实现了Queue接口,并且提供了支持队列的行为,可以作为Queue的一种实现。

Vector、HashTable、Stack已过时,不建议使用。

二、Map

一组成对的“键值对"对象,它将对象(而非数字)与对象相关联,可以通过键来查值。

1、HashMap(取代HashTable)

基于散列表的实现,设计快速访问

2、TreeMap

基于红黑树的实现,保持“键”处于排序状态,所以没有HashMap快

3、LinkedHashMap

类似于HashMap,通过链表保持元素插入顺序,但也通过散列提供了快速访问能力。

4、WeakHashMap

弱键(Weak key)映射,允许释放映射所指向的对象,如果映射之外没有引用指向某个键,则此"键“可能会被垃圾回收器回收。

5、ConCurrentHashMap

一种线程安全的Map,不涉及同步加锁。

6、ConcurrentSkipListMap

按照索引值升序保存对象,线程安全支持多并发

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值