Java集合框架

一、Collection接口(单列集合)

1.List接口

特点:有序,允许重复(值不唯一)

线程安全:

(1)ArrayList

        数据结构:数组:Object[ ] elementData

        使用场景:查找、遍历效率高,插入、删除效率低

        扩容方式:

               初始化       

                       有参构造方法:数组的初始化容量为0,添加第一个元素时,数组容量扩容为10

                       无参构造方法:数组按指定容量初始化

               容量不足时     按照数组现有容量的1.5倍扩容                

(2)LinkedList

数据结构:链表:双向链表

使用场景:插入、删除效率高,查找效率低

扩容方式:链表动态扩容,每添加一个节点,链表动态扩容一个元素空间

线程不安全:

(1)Vector

        数据结构:数组:Object[ ] elementData

        扩容方式:

                初始化       

                       有参构造方法:数组的初始化容量为10

                       无参构造方法:数组按指定容量初始化

               容量不足时     按照数组现有容量的2倍或指定容量值(capacityIncrement)进行扩容

        线程安全:通过“synchronized”同步锁实现

(2)Stack

特点:先进后出FILO or 后进先出LIFO

(3)CopyOnWriteArrayList

数据结构:数组:Object[] array

线程安全:

        通过“ReentrantLock”锁实现

        CopyOnWrite:"写入"操作时,先进行数组复制,然后在新数组中进行写入操作,然后                    替换;允许读写同时进行;

2.Set接口

特点:无序,不允许重复(值唯一)

(1)Hash Set   特点:无序

        数据结构:Hash Map

(2)LinkedHashSet   特点:有序

        数据结构:LinkedHashMap

(3)TreeSet     特点:自动排序

        数据结构:TreeMap

3.Queue接口

特点:先进先出FIFO,队头出队,队尾入队

线程安全:

(1)LinkedList:基于“双向链表”实现的队列

(2)PriorityQueue:基于“堆”实现的优先队列

线程不安全:

BlockingQueue        阻塞队列

(1)ArrayBlockingQueue(有界)

(2)LinkedBlockingQueue(无界)

二、Map接口(键值对集合)

1.线程不安全

(1)HashMap        特点:无序

        数据结构:数组(哈希表)+ 链表(链地址法解决哈希表冲突) + 红黑树(自平衡二叉树,                              提高查找效率)

        转换成红黑树的条件:链表的元素个数超过8,并且数组长度大于等于64

        转换成红黑树的优点:链表过长,会导致搜索效率降低,使用红黑树提高查找效率;

                                           红黑树,是一颗自平衡的二叉查找树,树中所有节点均自动排序,                                                  并且自平衡,可以使用二分查找,提高查找效率。

        扩容条件:默认情况下,数组长度为16(自定义时,必须保证数组长度为2^n 次幂)

                         达到扩容阈值threshold,按照2倍进行扩容

                         链表长度大于8,数组长度小于64

(2)LinkedHashMap        特点:有序

        数据结构:HashMap的子类,多维护了一条双向链表,保存顺序

(3)TreeMap        特点:自动按照key排序

        数据结构:红黑树

2.线程安全

(1)Hashtable        特点:无序、key和value不允许为null

        数据结构:数组+链表

        线程安全:通过“synchronized”同步锁实现

(2)ConcurrentHashMap        特点:无序

        数据结构:数组+链表+红黑树

        线程安全:synchronized同步锁 + CAS无锁化编程模型

三、Collection工具类        

        封装了集合的常见算法和操作

  • 9
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值