Java集合包学习总结

Java集合包学习总结


集合包总体架构:

 

List

ArrayList

基于动态数组实现。

数组的容量根据实际需求变化,空构造器的默认长度是10

非线程安全。

 

LinkedList

基于双向链表实现。

Entry<E>LinkedList中的一个内部类。

空构造器默认仅含一个头节点Entry<E> header的空双向链表。

顺序访问比较高效,随机访问效率极低。

非线程安全。

 

Vector

是一个矢量队列,支持增加、删除、修改、遍历等操作。

ArrayList数据结构类似,同样基于数组实现。

线程安全。

 

Stack

继承于Vector,是栈。

同样基于数组实现。

线程安全。

 

Map

HashMap

是一个散列表,存储内容是key-value键值对,内部类Entry<K,V>是一个单向链表,默认初始容量是16,加载因子为0.75

容量指哈希桶的数量,加载因子是哈希表在自动增加容量之前可以达到多满的一个尺度。

当哈希表中的条目数超出了加载因子与当前容量的乘积时,则要对该哈希表进行 rehash 操作(即重建内部数据结构)。

使用拉链法解决哈希冲突。

允许空(null)键值。

非线程安全。


HashTable

数据结构和HashMap类似,也是使用拉链法解决哈希冲突。

不允许空(null)键值。

线程安全。

 

TreeMap

是一个有序的key-value列表,基于红黑树实现,该映射根据其键的自然顺序进行排序。

支持null值,默认不支持null键,通过传入Comparator比较器的方式可以实现支持null键。

非线程安全。

 

WeakHashMap

数据结构和HashMap类似。

允许空(null)键值。

非线程安全。

WeakHashMap的键为弱键,当某“弱键”不再被其它对象引用,并被GC回收时。在GC回收该“弱键”时,这个“弱键”也同时会被添加到ReferenceQueue(queue)队列中。

当下一次我们需要操作WeakHashMap时,会先同步tablequeuetable中保存了全部的键值对,而queue中保存被GC回收的键值对;同步它们,就是删除table中被GC回收的键值对。

 

Set

HashSet

基于HashMap实现。

无序,无重复。

非线程安全。

 

TreeSet

基于TreeMap实现。

有序,无重复。

非线程安全。

 

学习于非常详细的集合包详解http://www.cnblogs.com/skywang12345/p/3323085.html

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值