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:
{}