自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(15)
  • 收藏
  • 关注

原创 数据结构与算法-->栈

【代码】数据结构与算法-->栈。

2023-01-14 23:32:18 97 1

原创 数据结构与算法-->链表

【代码】数据结构与算法-->链表。

2022-12-02 22:42:19 100 1

原创 hashSet源码学习第一天

HashSet ,基于 HashMap 的 Set 实现类。在业务中,如果我们有排重的需求,一般会考虑使用 HashSet。在 Redis 提供的 Set 数据结构,不考虑编码的情况下,它是基于 Redis 自身的 Hash 数据结构实现的。这点,JDK 和 Redis 是相同的。

2022-11-10 23:38:46 137

原创 LinkedHashMap源码学习

HashMap 提供的访问,是无序的。而在一些业务场景下,我们希望能够提供有序访问的 HashMap。那么此时,我们就有两种选择:TreeMap :按照 key 的顺序。LinkedHashMap :按照 key 的插入和访问的顺序。

2022-11-02 23:15:56 134

原创 HashMap源码学习第三天

方法,获得 key-value Set。方法,反序列化成 HashMap 对象。方法,序列化 HashMap 对象。方法,克隆 HashMap 对象。方法,获得 key Set。方法,获得 value 集合。方法,清空 HashMap。

2022-11-02 00:00:53 65

原创 HashMap源码学习第二天

在 HashMap 中,移除 和添加 key-value 键值对,整个流程是比较接近的。方法,移除 key 对应的 value ,并返回该 value。因为基本 HashMap 所有的操作,都需要用到哈希函数。对于计算出来的哈希值足够离散,保证哈希冲突的概率更小。方法,添加多个元素到 HashMap 中。实际上,在 构造方法中,看到。方法,查找指定 value 是否存在。静态方法,计算 key 的哈希值。方法,就是基于该方法实现。方法,添加单个元素。方法,查找单个元素。在 HashMap 中,

2022-10-31 21:05:51 176

原创 HashMap源码学习第一天

HashMap,是一种,用于存储 key-value 键值对的数据结构,一般翻译为“哈希表基于 key 级别的 get/put 等操作。在日常的业务开发中,HashMap 可以说是和 ArrayList 一样常用的集合类,特别是考虑到数据库的性能,又或者服务的拆分后,我们把关联数据的拼接,放到了内存中,这就需要使用到 HashMap 了。

2022-10-30 22:19:00 92

原创 LinkedList源码学习第二天

方法,查找最后个为指定元素的位置。if (o == null) { // 如果 o 为 null 的情况x!= null;x = x.prev) { // 倒序遍历,如果 item 为 null 的节点,进行返回index--;// 找到}} else {x!= null;index--;// 找到}}return -1;//未找到}

2022-10-29 18:38:06 328

原创 LinkedList源码学习第一天

LinkedList ,基于节点实现的双向链表的 List ,每个节点都指向前一个和后一个节点从而形成链表。相比 ArrayList 来说,我们日常开发使用 LinkedList 相对比较少。删除链表最后为o的元素public boolean removeLastOccurrence(Object o) { // 移除首个x!= null;unlink(x);= null;unlink(x);}}}}

2022-10-27 22:12:01 644

原创 ArrayList源码学习第二天全解

Array.newInstance(newType.getComponentType(), newLength)**这个方法是新建一个数组,数组类型为newType中元素的类型(默认返回Object类型,可强制转换为正确类型,详情看下列代码例),长度为 指定的newLength.首先这个方法有两个泛型,一个是T,一个是U,T代表传入的第三个个参数newType(传入的类型的class对象),U 代表传入的第一个对象original(即原数组的数据类型)方法,移除指定位置的元素,并返回该位置的原元素。

2022-10-26 13:23:23 288

原创 ArrayList源码第一天add方法

空数组,这是应为ArrayList考虑到节省内存,一些场景就是创建ArrayList对象,实际上没用,ArrayList优化成初始化为空数组,当首次添加元素时候才会初始化容量为10的数组.构造方法,根据传入的初始化容量,创建 ArrayList 数组,如果我们预先指定了数组大小,这个构造方法可以避免数组扩容合理使用内存。在我们明确知道会添加多个元素时,推荐使用该该方法而不是添加单个元素,避免可能多次扩容。方法,扩容数组,并返回它。方法的批量版本,优势就正如我们在本节开头说的,避免可能多次扩容。

2022-10-25 12:17:19 408

原创 jdk源码之ArrayList实现Cloneable空架子

1,ArrayList类图实现了Cloneable对象可以支持clone功能1.Java对象要支持clone功能。但不是所有Java对象都应该可以clone,而是要让用户自己标记出哪些类是可以clone的2.clone()是一个特殊的多态操作,最好是有JVM的直接支持。

2022-10-24 13:28:59 191

原创 jdk源码之ArrayList实现Serializable空架子

Java序列化是指把Java对象转换为字节序列的过程;Java反序列化是指把字节序列恢复为Java对象的过程。两个流:objectOutputStream、ObjectInputStreamserialVersionUID的作用Serializable与Externalizable的关系transient关键字在实现Serializable里有效果在实现Externalizable接口中无效。

2022-10-23 16:40:46 97

原创 jdk源码之ArrayList实现RandomAccess空架子

那表示它能快速随机访问存储的元素底层是数组实现的ArrayList实现他说明太使用for循环比LinkList的for循环快.数据支持随机访问, 查询速度快, 增删元素慢;链表支持顺序访问, 查询速度慢, 增删元素快。这个标记接口就是标记能够随机访问元素的集合, 简单来说就是底层是数组实现的集合。2,RandomAccess点进去只是个空架子,那么他有什么用呢?利用instanceof可以使用他最优的效率方式去遍历数据。的不同子类选择不同的遍历方式, 提升算法性能。在遍历前进行判断,根据。

2022-10-23 11:32:28 206

原创 JDK.8源码阅读项目搭建之记录

调试进入JDK源码以后,发现不能进行注释,每个文件上都有一个小锁的图标,这是因为现在关联的源码并不是我们项目里刚拷进去的源码,而是JDK安装目录下的src.zip只读压缩包。解决方法::Preferences --> Build,Execution,Deployment --> Debugger --> Stepping。这是因为调试时,JDK源码受保护,一般单步调试不让进,但是可以设置。解决办法: 重新关联JDK源码路径为本项目路径下的这一份JDK源码。问题四:如何对JDK源码做注释?

2022-10-23 10:47:50 338 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除