![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
源码
lukamao
这个作者很懒,什么都没留下…
展开
-
Integer类中的numberOfLeadingZeros和numberOfTrailingZeros方法
一、引例今天在阅读 Integer 类的源码的时候,发现了两个比较有意思的方法, 频繁的使用位运算进行左移和右移操作,分别是 numberOfLeadingZeros 方法和 numberOfTrailingZeros 方法。二、numberOfLeadingZeros这个方法从 JDK 1.5 以后开始出现,主要功能是返回无符号整型 i 的最高非零位前面的 0 的个数。例如:无符号整数 24 的二进制表示为 0000 0000 0000 0000 0000 0000 0001 1000,第五位原创 2020-08-03 16:51:22 · 1299 阅读 · 0 评论 -
LinkedHashMap 源码解析
一、简介LinkedHashMap 继承了 HashMap 类,是 HashMap 的子类,LinkedHashMap 的大多数方法的实现直接使用了父类 HashMap 的方法。LinkedHashMap 可以说是 HashMap 和 LinkedList 的结合体,既使用了 HashMap 的数据结构,又借用了 LinkedList 双向链表的结构。LinkedHashMap 实现与 HashMap 的不同之处在于,后者维护着一个运行于所有条目的双向链表。此链表定义了迭代顺序,该迭代顺序可以是原创 2020-05-23 23:09:01 · 250 阅读 · 1 评论 -
HashMap 源码解析
一、简介哈希表也叫散列表,是一种非常重要的数据结构,底层实现是一个 key - value 键值对。应用场景及其丰富,许多缓存技术(比如 Redis)的核心其实就是在内存中维护一张大的哈希表。Java 中的 HashMap 就是这样一种结构,不仅经常用于开发当中,而且 HashMap 的实现原理也常常出现在各类的面试题中。在哈希表中进行添加,删除,查找等操作,性能十分之高,不考虑哈希冲突的情况下,仅需一次定位即可完成,时间复杂度为 O(1),接下来我们就来看看哈希表是如何实现达到惊艳的常数阶 O(1)原创 2020-05-22 20:00:40 · 412 阅读 · 2 评论 -
Vector 源码解析
一、简介Vector 也是基于数组实现的,是一个动态数组,其容量能自动增长。Vector 是 JDK 1.0 引入的,它的很多实现方法都加入了同步语句,因此是线程安全的(其实也只是相对安全,有些时候还是要加入同步语句来保证线程的安全),可以用于多线程环境。Vector 实现了 Serializable 接口,因此它支持序列化,实现了 Cloneable 接口,能被克隆,实现了 RandomAccess 接口,支持快速随机访问。原创 2020-05-20 18:44:52 · 280 阅读 · 0 评论 -
LinkedList 源码解析
一、简介上文我们探讨了线性表的顺序存储结构的实现 ArrayList,今天我们来讲链式存储结构的实现 LinkedList。LinkedList 是一个用链表实现的集合,元素有序且可以重复。今天我们来分析一下 LinkedList 的源码。二、继承结构和 ArrayList 集合一样,LinkedList 集合也实现了 Cloneable 接口和 Serializable 接口,分别用来支持克隆以及支持序列化。List 接口也不用多说,定义了一套 List 集合类型的方法规范。相对于 Array原创 2020-05-18 18:23:38 · 509 阅读 · 2 评论 -
ArrayList 源码解析
一、简介ArrayList 是可以动态增长和缩减的索引序列,它是基于数组实现的 List 类,它实现了 List 接口,List 接口继承自 Collection 接口,Collection 是所有集合类的父类,所以 ArrayList 间接实现了 Collection 接口。我们之前学过一门叫做数据结构的课程,线性表是我们学过的第一个数据结构,它有两种存储方式,一种是线性的,另一种是链式的。分析一个集合类的时候,数据结构往往是它的灵魂所在,理解底层的数据结构其实就理解了该类的实现思路,ArrayList原创 2020-05-16 21:49:24 · 333 阅读 · 0 评论