Se si desidera prestazioni di fantasia o altre caratteristiche di fantasia per il proprio vettore bit o bit impostato, come già suggerito da alcuni, è necessario ereditare un'implementazione esistente di vettore/set di bit. Oppure, puoi fare riferimento ad alcune implementazioni open source. Tuttavia, se vuoi imparare il meccanismo del vettore bit, è piuttosto semplice. Ecco un applicazione come ad esempio:
class BitSet{
private Byte[] p;
private BitSet(){
p = null;
}
public BitSet(int n){
assert n > 0;
p = new Byte[(n - 1) >> 3 + 1];
}
public BitSet Complement(){
BitSet bs = new BitSet();
bs.p = new Byte[p.length];
for(int i = 0; i < p.length; i++){
bs.p[i] = ~ p[i];
}
return bs;
}
public BitSet Union(BitSet bs2){
assert p.length == bs2.p.length;
BitSet bs = new BitSet();
bs.p = new Byte[p.length];
for(int i = 0; i < p.length; i++){
bs.p[i] = p[i] | bs2.p[i];
}
return bs;
}
public BitSet Intersection(BitSet bs2){
assert p.length == bs2.p.length;
BitSet bs = new BitSet();
bs.p = new Byte[p.length];
for(int i = 0; i < p.length; i++){
bs.p[i] = p[i] & bs2.p[i];
}
return bs;
}
}
Si possono implementare e aggiungere il proprio funzionamento set-saggio presenta nel esempio di cui sopra.
Apache Mahout ha un set di bit open source. – bmargulies
perché non usare altri bitset e ereditali semplicemente? –