00:00
啊,那么八呢,和它有一些区别啊,区别呢有几个小点。咱把这个小点呢,也稍微说一下吧,啊这呢,我把这个说完,咱们就哎就就就停止啊啊那么JDK8说相较于这个JDK7啊,它的在底层实现方面的不同,哎,这个不同这呢有这样的几个点啊,那第一个点呢,就是我们在这个new哈希map这个对象的时候啊,在JTK8的时候呢,他一开始并没有去帮我们造这个数组啊,说这个new哈基map粉的时候,这个时候啊说底层没有啊,创建一个长度为16的一个N垂数组,这个时候呢,还得多说一句,在这个JDK8当中呢,它不叫N垂了。我们这就先是说叫一个数组啊,它在JDK8的呢,这个叫node了,这也说一下啊,这个呃,JDK8底层的这个数组呢,啊是是谁呢,是这个node类型的数组啊,稍微有点区别啊,而非啊N垂数组。
01:17
这也算是一个小点吧,啊,其实呢,本身里边这个属性呢,什么都没有变啊,这是这个点,然后的话呢,我们去调这个铺的方法的时候,哎,我们说在这个GDK8当中首次。调用哎,调用我们这个铺的方法时,哎,然后呢,这个底层去创建长度哎为16的这个数组。哎,当你调这个put方法的时候呢,我们底层才把这个数组呢,给你创建出来了,这个也很好理解,其实呢,是不是类似于咱们前面说的那个对a release的时候是吧,A release和七跟八的区别呢,也是这样子的啊,哎,多了一个这个二的知识,然后再接着这个四,这个区别呢,也是显著的,什么区别呢,就是原来啊,就是这个JDG7哈,它的这个底层结构。
02:16
哎,只有啊,这个数组加链表,那在我们这个JDK8当中,哎,我们提到了它的一个底层结构,数组加链表加红黑数,那么什么时候会涉及到红黑数,我们下边说说当这个我们都是看源码看的啊说当呢,呃,我们说数组的某一个啊,索引位置上的。这个元素啊,咱不是说呢,你这是一个数组在这个放放数据,这个呢,假设哈希值上发现相同,或者哈里值不同,但是你存储位置一样等等啊哎,E呢又是false啊,你们几个不就都得以链表方式去存嘛,所以呢,当数组某一个索引位上这个元素,它的这个以链表形式存在的这个个数。
03:12
哎,链表形式存在的这个数据个数,哎,它当它呢是大于八。就是要超过八了啊,其实看圆码的话还有一个点啊,且当前这个数组的这个长度呢,哎,还超过64了。当前这个数组的长度呢,还超过64了,那么我们此时这个词,哎索引位置上的哎所有数据,哎那么改为使用红黑数存储,哎,这呢是我们这个点,然后这个换一行吧,哎当你满足这样一个条件的时候呢,我把这个缩以位上这个数据呢,改为用红黑数去存储,那么大家可能会想为什么。
04:08
为什么他要做这样的一个修改,这是其实八的一个核心的修改啊,诶对同学说便利快,方便查找,怎么体会,对对啊,诶对大家说的是对的,就是原来你这个位置上呢,假设我已经好几个了啊,原来咱们在七的时候呢,我现在要找个元素找的时候呢,确实咱们哈扣呢比较方便啊,上来就定位到这儿了,但是这呢有好几个,是不是就得一个一个比啊,一个一个比,这就相当于是变了一变啊,你像你这个效率是不是就比较这个这个低一些是吧,那现在呢,如果这个元素比较多的时候呢,啊,这时候我们说把它改成一个,改成是一个这个这个二叉树。啊,这个二大树呢,咱们就提到了这个宏位数呢,还是一个叫呃有序的是吧?啊二叉排序数啊,就是相对比较小呢,放这比较大呢,放这儿啊然后接着呢,再是这样的一个特点,那你上来呢,去比较的时候呢,发现诶比他小是不是就从这一只找,再从这只找,每次呢,是不是就少一半的这个判断一样是吧?哎,那你这个时候呢,查找这个效率呢,显然要高很多,就是为了做这样的一个优化啊,所以提到了一个红黑树这样的一个结构啊这就说清楚了啊好这呢就是咱们说的这个七和八的底层的一个说明啊这块呢,大家也能够用自己的话呢描述出来,哎,得能够说清楚啊,那下午的话呢,咱们看一下底层源码啊,验证一下咱们写的这个话呢是对的啊,你先把这个事呢记一记,然后我们再看源码呢,你就会很清楚,你要这个呢还没记住,再看源码呢,加上源码呢,这个写的方法呢又很细,就懵了啊先呢中午呢把这个事呢先聚一聚啊。
我来说两句