您的位置:首页 > 编程语言 > Java开发

Java集合包学习总结

2018-01-24 10:22 190 查看
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时,会先同步table和queue。table中保存了全部的键值对,而queue中保存被GC回收的键值对;同步它们,就是删除table中被GC回收的键值对。
 

Set:
HashSet:
基于HashMap实现。
无序,无重复。
非线程安全。
 
TreeSet:
基于TreeMap实现。
有序,无重复。
非线程安全。
 

学习于非常详细的集合包详解http://www.cnblogs.com/skywang12345/p/3323085.html
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: