集合是Java的基础,也是面试中必备的小菜,Java集合的底层原理,是我们需要必须掌握的。本文从多个维度来讲下Java场景的几种集合及面试考点。
1、List
1)ArrayList 数组结构,查询快,插入慢,复制的时候直接加一倍
2)LinkList 链表结构,查询慢,插入更新快。可以操作表头和表尾,可以当做堆栈,队列及双向队列使用
3)Vector 数组结构,支持同步,相当于加锁的ArrayList
2、Set
1)HashSet hash表结构
2)TreeSet
TreeSet是二叉树(红黑树的数据结构)实现的,自动排序,不允许放入null
3)LinkHashSet
LinkedHashSet底层是LinkHashMap。保证顺序,也就是说遍历序和插入序是一致的。
3、Map
1)HashTable
2)HashMap
- 2.1) hashmap1.7
2.1.1)基本结构:数组+链表,负载因子0.75,扩容双倍
2.1.2)负载因子为啥0.75:“哈希冲突”和“空间利用率”矛盾的一个折衷
2.1.3)扩容为啥是2^n:方便位运算,使得数据分布均匀
2.1.4)扩容死链:头插法,在多线程下会产生环形链表,查询的时候就会死循环
- 2.2) hashmap1.8
2.2.1)基本结构:数组+链表+红黑树</