Java源码
微微笑再加油
很多时候,我们更需要做的就是闭上自己愿意争辩的嘴,放下所谓高贵的自尊,承认自己曾经所犯的错误,下定决心努力去修正它。这并不代表放弃,而是收获了一份成长。
展开
-
源码之Hashmap(算法设计)
1.在看HashMap 的底层的时候,会有个疑问,为什么数组长度为何总是2的n次方? HashMap 在其构造函数 HashMap(int initialCapacity, float loadFactor) 中作了特别的处理,如下面的代码所示。当底层数组的length为2的n次方时, h&(length - 1) 就相当于对length取模,其效率要比直接取模高得多,这是HashMap在效率上的一个优化。 // HashMap 的容量必须是2的幂次方,超过 initialCapacity 的最小原创 2020-06-16 22:21:55 · 222 阅读 · 0 评论 -
源码之Hashmap(底层原理)
下面简单介绍一下Hashmap的底层原理(jdk 1.8) 1. HashMap的数据结构 数组的特点是:寻址容易,插入和删除困难; 链表的特点是:寻址困难,插入和删除容易。 hashmap把数组和链表合二为一,就是我们所说的哈希表,下面介绍一种常见的哈希表(网上找的图)。 2.数组元素Node<K,V>实现了Entry接口 //Node是单向链表,它实现了Map.Entry接口 static class Node<k,v> implements Map.Entry<k,v&原创 2020-06-16 21:44:31 · 197 阅读 · 0 评论 -
源码之Equals学习
1.基本数据类型的包装类使用equals方法 注意:基本数据类型没有equals方法,判断是否相等使用"==" //例如 Integer a = 6; Integer b = 5; String f = "5"; System.out.println(a.equals(b)); equals源码如下 /*当使用a.equals(b)的时候,会默认调取a类型所对应的equals的方法 (...原创 2020-05-07 16:32:40 · 125 阅读 · 0 评论 -
源码之ArrayList源码学习
ArrayList简介: ArrayList 是一个数组队列,相当于 动态数组。与Java中的数组相比,它的容量能动态增长。它继承于AbstractList,实现了List, RandomAccess, Cloneable, java.io.Serializable这些接口。 ArrayList 继承了AbstractList,实现了List。它是一个数组队列,提供了相关的添加、删除、修改、遍历等...原创 2020-04-28 21:11:37 · 134 阅读 · 0 评论