今天看到一篇文章提到 hash & (table.length-1) 替代 hash % (table.length),为什么可以替换呢,思路如下。
由于 length 是2的幂次方,即 2,4,8,16...,数 N 对 length 取余得到的结果必定是小于 length 的,即0,1,2...length-1。而 N & (length-1) 得到的结果同样是0,1,2...length-1(length -1 的结果是 1 or 11 or 111 or 1111)。因此可以替换
今天看到一篇文章提到 hash & (table.length-1) 替代 hash % (table.length),为什么可以替换呢,思路如下。
由于 length 是2的幂次方,即 2,4,8,16...,数 N 对 length 取余得到的结果必定是小于 length 的,即0,1,2...length-1。而 N & (length-1) 得到的结果同样是0,1,2...length-1(length -1 的结果是 1 or 11 or 111 or 1111)。因此可以替换
本文标题:LinkedHashMap 与运算替换取模
本文链接:https://www.haomeiwen.com/subject/shzbnftx.html
网友评论