java面试笔记-01-集合面试题-介绍

好了,各位同学。下面我们开始新的篇章。就是Java集合相关的面试题。相信啊,说到集合呢,你肯定是比较熟悉的。在我们之前的课程中或者是学习中,大家用过哪些集合比较多呢?List,还有Map对吧?

虽然呢,你使用起来很熟悉,但是在面试的时候,面试官呢,可不会问一些使用的问题,那为啥呢?当然都是一些底层的原理。那我们这次课呢,主要也是对于面试过程中啊,高频的面试问题进行讲解。

有助于你呢,更好的去应对面试官。那接下来呢,我们先来看一看Java集合中有哪些类,我们也来标明一下,哪些是高频的面试题?大家来看这个图。

这个图里边就列出了,当前所有的Java提供的集合。它一共是分了两大类。第一个呢是叫做Collection单列集合,第二个是Map双列集合。

好,我们先来看这个单列集合啊。它的一共分为了两个子接口,那第一个是叫List,有序可重复的。第二个是Set,它是无序唯一的,OK啊,那下面呢,我们就分别来去介绍一下List和Set它们的实现类。

好,来看一看啊。那第一个呢,就是Vector,那这个在我们实际开发中用的多不多? 并不多吧。但是啊,你还是要知道它的一些大概的特点,它是一个数组的结构。那就是说底层使用的是数组,然后呢是线程安全的,这里面呢,通常指的线程安全呢,一般都是加了 synchronized 锁的,所以说线程是安全的,但是相对的性能就会很低。

好,来看第二个是ArrayList,这个呢,在我们实际开发中用的是很多的,对不对,它的底层呢,也是数组的结构。但是啊,它不是线程安全的,也就是说没有加锁,那性能呢,相对来说就比较高。

好,来看第三个,第三个呢是叫做LinkedList,它是一个链表结构。底层呢,使用的是双向链表。然后它呢,是一个非线程安全的。

好,那介绍完List之后呢,下面呢,我们再来说一下Set。

Set里边呢,有两个实现类,第一个是叫HashSet。它的底层是哈希表结构组成的。它有个实现类啊,叫做LinkedHashSet。它是有两个数据结构啊,一个是哈希表,另外一个是链表。

好,还有一个实现类啊,叫TreeSet,它底层是使用的红黑素的结构。

好,那介绍完单列集合之后呢,下面呢,还有一个双列集合Map。这里边呢,主要有这四个实现类。

好,第一个是叫HashTable,那这个呢,在官方上已经不推荐使用了,它是一个线程安全的,底层是用了加锁的,性能是不高的啊。但是啊,它有个实现类叫Properties,这个呢,通常啊,我们会有一些配置需要用到当前那个Properties。

大家注意,第二个就非常重要了,叫做HashMap,它底层是哈希表结构,也是线程不安全的。那这个也就是说性能是比较高的,对不对,它有一个实现类叫LinkedHashMap。

好,第三个呢,是叫ConcurrentHashMap。这个呢是一个哈希表结构,它是线程安全的。它这个线程安全呢,跟上面这个HashTable和Vector他们的实现方式不一样。那这个呢,性能相对来说也是比较高的,后期呢,我们去讲多线程的时候啊,会重点去介绍ConcurrentHashMap。

好,最后一个啊就是TreeMap,它也是红黑素的结构。

好了,那么多集合,在面试的时候都会被问到吗?也不是的啊,我们重点的主要是介绍在面试的过程中问的比较多的一些集合。

在单列集合中就有两个。一个是ArrayList,另外一个是LinkedList,在双列集合中也有两个,一个是HashMap,另外一个是ConcurrentHashMap。

其实大家呢,也能发现一些规律,大家来看啊,我在这标明一下。比如说,当前这个ArrayList中啊,开头是一个Array。那LinkedList它的开头是Linked。还有一些啊Hash,还有LinkedHash,还有Tree,看到了吗?还有HashMap的Hash。像这些呢,都是表明的数据结构。

其实呢,你通过名字啊,就能分析出它底层使用的是哪一种数据结构,如果说你能够知道这些数据结构的特点的话呢。其实呢,你通过这些数据结构呢,就能够反推出当前某个集合的特点。

所以说啊,为了能够让大家更方便的去理解这个集合,我们在讲解集合之前呢。会先给大家去讲解一下集合所对应的这些数据结构。

大家来看啊。首先呢,第一个我们在去讲ArrayList当前这个集合的时候,会先去介绍数组它的特点。你一旦掌握了当前这个数据结构的特点,你再去理解ArrayList就相对会容易了很多。

那下面呢,也是一样的啊,第二个是LinkedList,我们呢也会先去介绍链表,在链表中呢,我们就会介绍单向链表和双向链表。

好,第三个呢是叫做HashMap。它这个底层啊,用的数据会更多一些,第一个是二叉树、红黑树、散列表,包括我们之前学习的链表和数组呢,也需要用到。

在这里边啊,为了让大家区分操作数据结构的好坏,我们呢,也会专门去介绍算法复杂度分析的讲解。让你呢,能够掌握这些数据操作的特点。区分他们的好坏。

好啦,那这个呢,就是集合相关的课程介绍,下面呢,我们就正式开始面试题的讲解。

(6分钟——>笔记将近45+8=53分钟来整理)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

被开发耽误的大厨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值