Ros*_*han 7 java collections bit-manipulation
在Java Collection类中,我经常注意到如下代码
//ArrayDeque
public E pollFirst() {
int h = head;
@SuppressWarnings("unchecked")
E result = (E) elements[h];
// Element is null if deque empty
if (result == null)
return null;
elements[h] = null; // Must null out slot
head = (h + 1) & (elements.length - 1);
return result;
}
Run Code Online (Sandbox Code Playgroud)
怎么head = (h + 1) & (elements.length - 1);
办?为什么在这里使用&运算符以及它的用途是什么.
我的问题不是如何和有效,但它在这里有什么用处.
有人能解释一下吗?
Hen*_*nry 11
这是一个快捷方式(h + 1) % elements.length
,只有elements.length
在两个权力的情况下才有效.在一些较旧的硬件上,这可能会稍快一些,但我怀疑在现代CPU上仍然如此.