集合

根据需求一共有这么几种东东:
List
Map
Set
Dictionary
Queue

List这个用的最多,就是一个有序的列表
Map key-value 对
set 无序列表
Dictionary 完全可以被Map替代
Queue 队列

实现

所有的实现都是基于数组或者链表实现的,或者数组+链表 链表+数组
链表插入删除速度快,数组查询快省内存

List包含子类有:
AbstractList

注意这里会有一些东西写的比较奇怪,比如AbstractList继承自AbstractCollection,实现了List接口,
并且list还实现了Collection的接口。这是因为java不支持多继承。代码想让List是接口,而不是抽象类。
这里只是为了代码复用罢了

这里我们大概可以这么理解,AbstractList这个就是为list的实现提供了部分的必要函数,其实没啥乱用,关键还是那个遍历器。
下面我们分析一下所有的实现类
ArrayList 就是一个数组,需要时候扩容,插入需要复制后面的部分。

RandomAccess 这是仅仅是接口,只是用来查询时候,方式不同

LinkedList 这是通过链表实现的,顺手实现了Queue接口。

Vector 这个就是一个线程安全的ArrayList.没什么可以说的

Stack 继承自 Vector 原理一个毛样。多了栈的一些方法

进入核心map

HashMap 数组+链表

TreeMap 二叉树

Hashtable 线程安全的HashMap

SortedMap

下面关注一下set。

set是无序的,看下实现

HashSet 这个是HashMap来存贮的

TreeSet 就是TreeMap实现的。

LinkedHashSet 他就是HashSet 的子类,貌似只在查找时候才不一样

所以set基本就是其他的封装。

你可能感兴趣的:(集合)