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