韩顺平java课程527 -531速记笔记

发布于:2022-12-17 ⋅ 阅读:(392) ⋅ 点赞:(0)

  

527

LinkedHashSet底层是一个LinkedHashMap,

底层维护了一个 数组+双向链表

link代表链表

hashset的子类

LinkedHashSet

根据元素的hashcode值来决定元素的存储位置

维护元素的次序

(使其想顺序插入)

放在了不同的索引上

构建了双向链表

好处:可以有顺序

使其有序

528

Head

Tail

先求hash值、再求索引、确定元素在table的位置、将元素添加到双向链表

插入和遍历数据一样

数组table就是16

存放的结点类型

可以看到这里他们之间有继承关系

存放的数据/元素

Linkedmapentry

Entry

继承了什么,继承关系

entry类型,里面有before 和 after

双向链表

继承关系

内部发生的,继承关系在内部类完成

但可以看到它的索引位置都是不同的

感觉有些像是在嵌套的感觉

529

530

treeset跟后面的差不多

双列

set底层存放的是key与value

利用常量来替代的

由上至下的顺序

Jdk8的map接口特点

Key value

(保存双列元素)

封装到hashmapnode中

静态内部类

value是可以重复的

number不在同一个链表上

等价于替换

大部分用string做key

但是不是一定要用string做key

因为我们经常用key

没有这个说法

New.object也可以

Map.get

传入一个key

含义是什么

通过get方法,传入一个key,

会返回对应得value

使用get方法,得到value

531

追一下源码

Putval

一对k-v,就是entry

key放在set结合

value放在collection放在接口实现子类

Hashmapnode 由set和collection指向

听蒙圈

其他老师讲的很混乱

将其整一个源码来分析

写一段代码

而一个entry对象就有k,v ,EntrySet<Entry<K,V>>

Entryset

key放在set集合

简单的指向

entryset里面放的是一个一个的entry

而entry还是指向node

里面entry是向上转型

定义的类型是一个mapentry,但是实际上存放的还是一个还是hashmap$node

提供了重要的方法

getKey getVal

1.先做一个向下转型

Map.entry

hashmap放在entry

将node - entry - entryse

都是指向node

直观看出指向关系

entry

table表里面的node结点

等于entryset没有什么关系

Set 里面还有一个keyset方法

将其提取出来

  

    


网站公告

今日签到

点亮在社区的每一天
去签到