1. Collection 和 Collections 有什么区别?
    • java.util.Collection 是一个集合接口(集合类的一个顶级接口)。它提供了对集合对象进行基本操作的通用接口方法。Collection接口在Java 类库中有很多具体的实现。Collection接口的意义是为各种具体的集合提供了最大化的统一操作方式,其直接继承接口有List与Set。
    • Collections则是集合类的一个工具类/帮助类,其中提供了一系列静态方法,用于对集合中元素进行排序、搜索以及线程安全等各种操作。

    1. List、Set、Map 之间的区别是什么?

    list、set、map的区别.jpeg


    1. ArrayList与LinkedList的区别?
    • 动态数组,需要连续内存存储,适合下标访问;扩容机制:基础容量10,右移1.5倍扩容;不是尾插还会涉及元素位移。
    • 双向链表,分散存储在内存中,插入和删除复杂度O1,查询复杂度On;遍历要用迭代器遍历,因为每次for循环get都需要重新遍历。

    1. 如何实现数组和 List 之间的转换?
    • List转换成为数组:调用ArrayList的toArray方法。
    • 数组转换成为List:调用Arrays的asList方法。

    1. HashMap中常用的方法有哪些?什么时候会触发树化?jdk1.7和1.8实现的差异?1.7的实现为什么会出现死锁,画图说明下?HashMap和TreeMap的区别?
    2. put、get、remove、containsKey、containsVaule、isEmpty,vaules、ketSet、entrySet
    3. 数组长度64,链表高度8
    4. 数组+链表+红黑树
    5. 多线程下,扩容时,发生节点转移,形成双向链表,get这一范围值产生死循环。
    6. 结构,有无序、

    1. HashMap和 HashTable的区別? 底层实现是什么?

    区别:

    • HashTable有synchronized修饰线程安全的
    • HashMap允许key,value为null

    结构: 数组+链表+红黑树,jdk8链表高度8,数组长度超过64,链表转为红黑树,元素以内部类Node节点存在

    • 计算key的code值,两次hash然后数组长度取模,对应到数组下标
    • 没有hash冲突,直接创建Node存入数组。
    • 产生hash冲突,先进行equal比较,相同取代;不同判断链表高度没超过8,插入链表尾部,超过并且数组长度超过64链表转为红黑树,长度低于6转回链表。

    1. 如何决定使用 HashMap 还是 TreeMap?
    • 对于在Map中插入、删除和定位元素这类操作,HashMap是最好的选择。
    • 然而,假如你需要对一个有序的key集合进行遍历,TreeMap是更好的选择。

    基于你的collection的大小,也许向HashMap中添加元素会更快,将map换为TreeMap进行有序key的遍历。