使用 java 中的位移位器将通用数组的大小加倍

Doubling generic array's size with bit shifters in java

如果通用数组的大小已达到我的 maxCapacity 值,我将尝试将其加倍。当然,我可以通过乘以我的 maxCapacity * 2 来做到这一点,这将使我能够附加两倍的值。问题是我看到以某种方式使用移位器可以实现相同的目的。它与运算符 =<<=>> 或类似的东西有关。

这是我的代码:

....
private E [ ] list;
private int maxCapacity, currentSize;
....

maxCapacity = 10;
currentSize = 0;

if(currentSize > maxCapacity)
    maxCapacity *= 2;
...

我的 maxCapacity 不是数组的实际大小,但在我的方法中,我确保在将对象插入数组时,它不会超过 maxCapacity 值。

你知道如何在运行中使用位移运算符来实现相同的行为吗?我不知道这是否可能,但我记得不久前看过一些采用这种行为的代码。

感谢您的帮助!

如果我理解正确,你必须这样做:

if (currentSize > maxCapacity) 
    maxCapacity <<= 1;

1 向左移动将使 maxCapacity 的值加倍。

例如,如果 maxCapacity5,则它的二进制表示形式将是 101。使用 1 移位意味着将单个 0 附加到二进制表示形式,这将使它成为 1010。这现在代表 10.