Java集合区别及主要实现类讲解
今天要分享的是Java集合的知识点。
首先看下面的Java集合分类树状图。
List、Set、Queue和Map区别?
- List 存储元素有序、可重复,提供了一个特殊的迭代器ListIterator。
- Set 存储元素⽆序、不可重复。
- Queue 按照特定的排队规则来排序,存储的元素是有序、可重复的。
- Map 使⽤键值对(kye-value)存储,Key 是⽆序的、不可重复的,value 是⽆序的、可重复的,可多对一。
四大接口主要实现类
- List
- Arraylist : 底层obejct数组,查询快,增删慢,线程不安全,效率高。
- Vector : 底层object数组,查询快,增删慢,线程安全,效率低。几乎淘汰。LinkedList:底层数据结构是链表,查询慢,增删快,线程不安全,效率高。
- Set
- HashSet:基于 HashMap 实现的,底层采⽤ HashMap 来保存元素。
- LinkedHashSet:HashSet 的⼦类,底层通过 LinkedHashMap 来实现。TreeSet :底层通过TreeMap实现(TreeMap的实现就是红黑树算法)
- Queue
- ArrayQueue:底层 Object[]数组 + 双指针
- PriorityQueue:底层Object[]数组来实现二叉堆。默认大顶堆。
- Map
- HashMap:jdk1.7底层数组+链表,jdk1.8底层采用数组+链表/红黑树来存储key-value键值对。当链表的长度大于8时,链表会转化成红黑树。采用拉链法解决冲突(元素碰撞时,形成链表)。注:jdk1.7中元素叫作Entry,Jdk1.8中叫作Node,二者几乎一样,只是名称不同。HashTable:底层采用数组+链表来存储键值对,线程安全。
- LinkedHashMap:LinkedHashMap继承自HashMap,在HashMap的基础上加了双向链表。
- ConcurrentHashMap:JDK1.7 的 ConcurrentHashMap 底层采⽤分段的数组+链表 实现,JDK1.8 采⽤的数据结构跟 HashMap1.8 的结构⼀样,Node数组+链表/红⿊树。
关注我,及时获取最新内容
#java#Java 高频面试题 文章被收录于专栏
干货预警!本人大厂在职程序员,根据自身面试经历整理,分享给大家。