Java集合(List、Set、Queue、Map)区别及主要实现类讲解

23年硕士毕业半年被裁后,一个月斩获大厂offer,“跟着周哥走,offer手里有”。文末有周哥50+场面试总结出的必会面试题。

今天要分享的是Java集合的知识点。

首先看下面的Java集合分类树状图。 alt

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数组+链表/红⿊树。

以上内容出自本人整理的面试秘籍。 链接: https://pan.baidu.com/s/1o014Ems8diV0D3h8K15olA?pwd=fi3x 提取码: fi3x 复制这段内容后打开百度网盘手机App,操作更方便哦

工作日每天更新,周末随缘更新。

请关注我,以便及时获取最新内容哦!

本文由 mdnice 多平台发布

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值