jdk8源码分析-第一天-集合框架总述

集合框架体系结构图如下:位于java.util包下,其中LinkIterator应该是写错了,因为jdk中没有这个类,应该是ListIterator,它功能相对Iterator更多,且只能用于List的遍历。

1、ArrayList、LinkedList、Vector、Stack:它们都是List下面的实现类,相同点是都有序,允许重复,允许null值,可以用Collections.synchronizedList(List list)将线程不完全的List集合类转化为安全的集合类

 实现原理线程安全
ArrayList数组,随机查找快,增删慢no
LinkedList双向链表,增删快,随机查找慢no
Vector数组,与ArrayList类似yes
Stack栈,先进后出yes

 

2、HashSet、TreeSet、LinkedHashSet:Set接口的实现类,相同点:不允许重复,都是线程不安全的

 实现原理null值有序性
HashSet哈希表允许一个无序
LinkedHashSet哈希表+链表允许一个有序,按照插入顺序
TreeSet红黑树不允许有序,两种排序方式:自然排序、定制排序

 

3、HashMap、HashTable、LinkedHashMap、TreeMap、WeakHashMap、IdentityHashMap:相同点,我只能说它们都是Map

WeakHashMap、IdentityHashMap两个不常用,前者是“弱键”,当某个键不再被引用时,允许被清理,后者的key比较时调用==而不是equal

重点比较前面4个

 允许null线程安全有序性
keyvalue
HashMap允许为 null允许为 null不安全无序
HashTable不允许为 null不允许为 null安全无序
LinkedHashMap允许为 null允许为 null不安全有序:按照插入顺序
TreeMap不允许为 null允许为 null不安全有序,默认按照key升序,也可以自定义排序规则

4、Queue:队列的一种,先进先出,实现类图中没有给出来,有3种分类:双端队列(Deque)LinkedList是其中一个实现类;阻塞队列;非阻塞队列。实现有很多,目前水平有限,等专门学习时再补充。

5、除了这些集合类以外,还有两个排序接口,Comparable、Comparator,它们就是实现上面表格中自然排序和定制排序的两个接口,Iterator和ListIterator用于遍历,Collections和Arrays是两个工具类,提供一些用于处理集合类的静态方法。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值