- 博客(3)
- 资源 (2)
- 收藏
- 关注
原创 源码之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 225
原创 源码之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 200
原创 Java算法之运算符(&、|、^、左移、右移)
运算符(&、|、^)&和|不仅能作为逻辑运算符,它们还可以进行位运算,位运算由于是对二进制位进行运算,所以它的运行速率是计算中速率最快的,因为计算机底层就是使用二进制,只有0和1。与位运算(&):0 & 0 = 0, 0 & 1 = 0, 1 & 0 = 0, 1 & 1 = 1或位运算(|):0| 0 = 0, 0 | 1 =1, 1 | 0 =1, 1 | 1 = 1异或位运算(^):0 ^ 0 = 0, 0 ^ 1 = 1, 1 ^ 0
2020-06-08 16:39:44 303
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人