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 高频面试题 文章被收录于专栏

干货预警!本人大厂在职程序员,根据自身面试经历整理,分享给大家。

全部评论

相关推荐

09-19 19:10
已编辑
产品经理
点赞 评论 收藏
分享
点赞 3 评论
分享
牛客网
牛客企业服务