mirror of
https://gitee.com/chinabugotech/hutool.git
synced 2025-05-09 23:51:34 +08:00
使用位运算快速求解取余运算
This commit is contained in:
parent
b4e3fe485a
commit
c7a33d9015
@ -32,21 +32,21 @@ public class IntMap implements BitMap, Serializable {
|
|||||||
@Override
|
@Override
|
||||||
public void add(long i) {
|
public void add(long i) {
|
||||||
int r = (int) (i / BitMap.MACHINE32);
|
int r = (int) (i / BitMap.MACHINE32);
|
||||||
int c = (int) (i % BitMap.MACHINE32);
|
int c = (int) (i & (BitMap.MACHINE32 - 1));
|
||||||
ints[r] = ints[r] | (1 << c);
|
ints[r] = ints[r] | (1 << c);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean contains(long i) {
|
public boolean contains(long i) {
|
||||||
int r = (int) (i / BitMap.MACHINE32);
|
int r = (int) (i / BitMap.MACHINE32);
|
||||||
int c = (int) (i % BitMap.MACHINE32);
|
int c = (int) (i & (BitMap.MACHINE32 - 1));
|
||||||
return ((ints[r] >>> c) & 1) == 1;
|
return ((ints[r] >>> c) & 1) == 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void remove(long i) {
|
public void remove(long i) {
|
||||||
int r = (int) (i / BitMap.MACHINE32);
|
int r = (int) (i / BitMap.MACHINE32);
|
||||||
int c = (int) (i % BitMap.MACHINE32);
|
int c = (int) (i & (BitMap.MACHINE32 - 1));
|
||||||
ints[r] &= ~(1 << c);
|
ints[r] &= ~(1 << c);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -32,21 +32,21 @@ public class LongMap implements BitMap, Serializable {
|
|||||||
@Override
|
@Override
|
||||||
public void add(long i) {
|
public void add(long i) {
|
||||||
int r = (int) (i / BitMap.MACHINE64);
|
int r = (int) (i / BitMap.MACHINE64);
|
||||||
long c = i % BitMap.MACHINE64;
|
long c = i & (BitMap.MACHINE64 - 1);
|
||||||
longs[r] = longs[r] | (1L << c);
|
longs[r] = longs[r] | (1L << c);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean contains(long i) {
|
public boolean contains(long i) {
|
||||||
int r = (int) (i / BitMap.MACHINE64);
|
int r = (int) (i / BitMap.MACHINE64);
|
||||||
long c = i % BitMap.MACHINE64;
|
long c = i & (BitMap.MACHINE64 - 1);
|
||||||
return ((longs[r] >>> c) & 1) == 1;
|
return ((longs[r] >>> c) & 1) == 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void remove(long i) {
|
public void remove(long i) {
|
||||||
int r = (int) (i / BitMap.MACHINE64);
|
int r = (int) (i / BitMap.MACHINE64);
|
||||||
long c = i % BitMap.MACHINE64;
|
long c = i & (BitMap.MACHINE64 - 1);
|
||||||
longs[r] &= ~(1L << c);
|
longs[r] &= ~(1L << c);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user