list,set ,map底层分析


一.interface Collection

Java中所有集合的总接口,规定了集合最基本的方法和规范。
interface List extends Collection
List集合,特征:有序,可重复
class ArrayList implements List 【重点】
底层结构为【可变长数组结构】,特征:增删慢,查询快
class LinkedList implements List 【重点】
底层结构为【双向链表结构】,特征: 增删快,查询慢
class Vector implements List
底层结构为【可变长数组结构】,特征:增删慢,查询快,【线程安全】效率低于 ArrayList


二.interface Set extends Collection

Set集合,特征:无序,不可重复
class HashSet implements Set 【伪重点】 HashMap HashTable
底层结构为【哈希表】,每一个单元格位置都有唯一的坐标。存储效率极高
会涉及到 两个方法 分别是 Object类内 hashCode 方法和 equals 方法
class TreeSet implements Set
底层结构为【树形】结构,要求存储的元素有自然顺序或者比较方式。


三.interface Map Java中键值对 Map 双边队列接口

class HashMap
jdk1.8之前list+链表
jdk1.8之后list+链表(当链表长度到8时,转化为红黑树)HashMap的扩容因子默认0.75,也就是会浪费 1/4的空间,达到扩容因子时,会将list扩容一倍,0.75是时间与空间一个平衡值;
底层存储数据的结构为 哈希表 结构,存储位置由 Key 存储对象来明确,同时 Key 不可以重复,具有唯一 性存储过程需要得到 Key 对应对象的 hashCode 数据,如果出现了 相同 hashCode 结果,也是调用 Key 对应 equals方法进行比较。
class TreeMap
底层 二叉树 结构,要求存储数据 Key 有自然顺序,或者比较方式。
比较方式
interface Comparable 修饰当前类为可比较的类
interface Comparator 提供处理当前存储元素类对象的比较器