shouldn't it be
var actualSize = 1 << Integer.highestOneBit(approxSize - 1);
?
var actualSize = 1 << Integer.highestOneBit(approxSize - 1);
?
> public static int highestOneBit(int i)
> Returns an int value with at most a single one-bit, in the position of the highest-order ("leftmost") one-bit in the specified int value. Returns zero if the specified value has no one-bits in its two's complement binary representation, that is, if it is equal to zero.
There isn’t a straight floor(log2(·)) as far as I can tell, only Integer.numberOfLeadingZeros, and turning the former into the latter is annoying enough[2] that I wouldn’t prefer it here.
[1] https://docs.oracle.com/javase/8/docs/api/java/lang/Integer....
[2] https://docs.oracle.com/javase/8/docs/api/java/lang/Integer....