什么是<<;=Java中的运算符是什么意思?
你能解释一下这段代码吗 容量相当于什么是<<;=Java中的运算符是什么意思?,java,hashmap,bit-manipulation,bit,Java,Hashmap,Bit Manipulation,Bit,你能解释一下这段代码吗 容量相当于 capacity = capacity << 1; capacity=capacity它相当于capacity=capacity,就像var+=1差不多相当于var=var+1,你在这里看到的(var每次从循环中出来,'capacity'的值都会以更高的幂增加2 与最初一样,它是1,即2^0;但运算(容量不是严格相等的。可能会应用不同的优先规则。@assylias但为什么是2的幂?如果我们采用除法进行散列,并且采用2的幂的mod(例如2^w)我们
capacity = capacity << 1;
capacity=capacity它相当于capacity=capacity,就像var+=1
差不多相当于var=var+1
,你在这里看到的(var每次从循环中出来,'capacity'的值都会以更高的幂增加2
与最初一样,它是1,即2^0;但运算(容量不是严格相等的。可能会应用不同的优先规则。@assylias但为什么是2的幂?如果我们采用除法进行散列,并且采用2的幂的mod(例如2^w)我们甚至不考虑最右边的W位……“GEEK的逻辑是做一个重散列和一个掩码,比使用<代码> %>代码快,处理符号(涉及一个分支)@我猜想避免分支预测错过是主要的增益。”@Peter,使用mod对于素数大小的表来说是合理的,因为它可以减少冲突。冲突减少是通过您所解释的位置乱来改进的。java.util.HashMap中的冲突有点昂贵,因为它们会导致缓存丢失…开放地址表通常对于pow2大小的表来说更好,并且冲突更便宜。总的来说,像I多次声明java.util.HashMap
capacity = capacity << 1;