1.集合框架
    collection

    Arraylist
    image.pngimage.png

    首先Arraylist
    底层是一个数组,jdk7的时候在创建的时候默认创建一个底层长度为10的数组
    jdk8的时候在创建的时候默认长度为0
    在第一次添加数据的时候才会将数组长度变成10
    底层扩容是每次会创建一个新的数组长度为原来的1.5倍
    然后将原来的数据在通过数组拷贝到新数组中

    linklist:
    底层是一个链表:就是由一个个节点组成的 每个节点都有三个变量,分别用来存储前一个节点的位置,和后一个节点的位置,还有保存数据,因此linkedlist的添加和修改比Arraylist快,但是也要分情况,如果添加的位置或修改的位置在最后边Arraylist速度快。linkedlist其实某些程度上尽量不要使用,原因是lineklist它的内存占用比arraylist高

    HashSet
    底层 数组+链表
    特点 无序不可重复,它的无序表现为在存储的时候的无序,在存储的时候他会先判断是否有相同的hashcode,在jdk7中,如果有相同的hashcode 但是equals不同他会将这个新的元素插入到原来元素的上方
    jdk8中,会将新元素链接到原来元素的下方。

    TreeSet
    底层其实是一个二叉树,通过Compner接口实现自然排序

    HashMap
    在jdk7之前 每次创建一个hashmap的时候底层会创建一个长度为16的 数组
    底层是数组+链表,每次扩容为原来的2倍

    jdk8的时候,每次创建的默认容量是0
    在第一次添加元素的时候才会将默认容量变为16
    每次扩容为原来2倍
    默认加载因子是0,。75
    每次添加数据都会先判断hashcode 然后判断equals

    LinkedHashMap
    hashMap的子类

    Collections工具类 中的方法:

    image.png