Java - La classe BitSet
La classe BitSet crée un type spécial de tableau contenant des valeurs de bits. Le tableau BitSet peut augmenter en taille selon les besoins. Cela le rend similaire à un vecteur de bits. Il s'agit d'une classe héritée, mais elle a été entièrement repensée en Java 2, version 1.4.
Le BitSet définit les deux constructeurs suivants.
N ° Sr. | Constructeur et description |
---|---|
1 | BitSet( ) Ce constructeur crée un objet par défaut. |
2 | BitSet(int size) Ce constructeur vous permet de spécifier sa taille initiale, c'est-à-dire le nombre de bits qu'il peut contenir. Tous les bits sont initialisés à zéro. |
BitSet implémente l'interface clonable et définit les méthodes répertoriées dans le tableau suivant -
N ° Sr. | Méthode et description |
---|---|
1 | void and(BitSet bitSet) ANDs le contenu de l'objet BitSet appelant avec ceux spécifiés par bitSet. Le résultat est placé dans l'objet appelant. |
2 | void andNot(BitSet bitSet) Pour chaque bit 1 dans bitSet, le bit correspondant dans le BitSet appelant est effacé. |
3 | int cardinality( ) Renvoie le nombre de bits définis dans l'objet appelant. |
4 | void clear( ) Met à zéro tous les bits. |
5 | void clear(int index) Met à zéro le bit spécifié par l'index. |
6 | void clear(int startIndex, int endIndex) Met à zéro les bits de startIndex à endIndex. |
sept | Object clone( ) Duplique l'objet BitSet qui appelle. |
8 | boolean equals(Object bitSet) Renvoie true si l'ensemble de bits d'appel est équivalent à celui passé dans bitSet. Sinon, la méthode retourne false. |
9 | void flip(int index) Inverse le bit spécifié par l'index. |
dix | void flip(int startIndex, int endIndex) Inverse les bits de startIndex à endIndex. |
11 | boolean get(int index) Renvoie l'état actuel du bit à l'index spécifié. |
12 | BitSet get(int startIndex, int endIndex) Renvoie un BitSet composé des bits de startIndex à endIndex. L'objet appelant n'est pas modifié. |
13 | int hashCode( ) Renvoie le code de hachage de l'objet appelant. |
14 | boolean intersects(BitSet bitSet) Renvoie true si au moins une paire de bits correspondants dans l'objet appelant et bitSet est égale à 1. |
15 | boolean isEmpty( ) Renvoie true si tous les bits de l'objet appelant sont à zéro. |
16 | int length( ) Renvoie le nombre de bits requis pour contenir le contenu du BitSet appelant. Cette valeur est déterminée par l'emplacement du dernier bit. |
17 | int nextClearBit(int startIndex) Renvoie l'index du prochain bit effacé (c'est-à-dire le bit zéro suivant), à partir de l'index spécifié par startIndex. |
18 | int nextSetBit(int startIndex) Renvoie l'index du bit suivant défini (c'est-à-dire le bit suivant), à partir de l'index spécifié par startIndex. Si aucun bit n'est défini, -1 est renvoyé. |
19 | void or(BitSet bitSet) OU le contenu de l'objet BitSet appelant avec celui spécifié par bitSet. Le résultat est placé dans l'objet appelant. |
20 | void set(int index) Définit le bit spécifié par index. |
21 | void set(int index, boolean v) Définit le bit spécifié par index sur la valeur transmise dans v. True définit le bit, false efface le bit. |
22 | void set(int startIndex, int endIndex) Définit les bits de startIndex à endIndex. |
23 | void set(int startIndex, int endIndex, boolean v) Définit les bits de startIndex à endIndex, à la valeur passée dans v. True définit les bits, false efface les bits. |
24 | int size( ) Renvoie le nombre de bits dans l'objet BitSet appelant. |
25 | String toString( ) Renvoie l'équivalent de chaîne de l'objet BitSet qui appelle. |
26 | void xor(BitSet bitSet) XORs le contenu de l'objet BitSet appelant avec celui spécifié par bitSet. Le résultat est placé dans l'objet appelant. |
Exemple
Le programme suivant illustre plusieurs des méthodes prises en charge par cette structure de données -
import java.util.BitSet;
public class BitSetDemo {
public static void main(String args[]) {
BitSet bits1 = new BitSet(16);
BitSet bits2 = new BitSet(16);
// set some bits
for(int i = 0; i < 16; i++) {
if((i % 2) == 0) bits1.set(i);
if((i % 5) != 0) bits2.set(i);
}
System.out.println("Initial pattern in bits1: ");
System.out.println(bits1);
System.out.println("\nInitial pattern in bits2: ");
System.out.println(bits2);
// AND bits
bits2.and(bits1);
System.out.println("\nbits2 AND bits1: ");
System.out.println(bits2);
// OR bits
bits2.or(bits1);
System.out.println("\nbits2 OR bits1: ");
System.out.println(bits2);
// XOR bits
bits2.xor(bits1);
System.out.println("\nbits2 XOR bits1: ");
System.out.println(bits2);
}
}
Cela produira le résultat suivant -
Production
Initial pattern in bits1:
{0, 2, 4, 6, 8, 10, 12, 14}
Initial pattern in bits2:
{1, 2, 3, 4, 6, 7, 8, 9, 11, 12, 13, 14}
bits2 AND bits1:
{2, 4, 6, 8, 12, 14}
bits2 OR bits1:
{0, 2, 4, 6, 8, 10, 12, 14}
bits2 XOR bits1:
{}