Java-Bitset-Klasse

Java 数据结构Java-Datenstrukturen


Eine Bitset-Klasse erstellt einen speziellen Array-Typ, um Bitwerte zu speichern. Die Array-Größe von BitSet wird bei Bedarf erhöht. Dies ähnelt einem Vektor von Bits.

Dies ist eine traditionelle Klasse, aber sie wurde in Java 2 vollständig neu gestaltet.

BitSet definiert zwei Konstruktoren.

Der erste Konstruktor erstellt ein Standardobjekt:

BitSet()

Die zweite Methode ermöglicht es dem Benutzer, eine Anfangsgröße anzugeben. Alle Bits werden auf 0 initialisiert.

BitSet(int size)

Die in der von BitSet implementierten Cloneable-Schnittstelle definierten Methoden sind in der folgenden Tabelle aufgeführt:

Nein. Methodenbeschreibung
1 void and(BitSet set)
Führt eine logische AND-Operation auf diesem Ziel-BitSet und dem Argument-BitSet aus.
2 void andNot(BitSet set)
Löscht alle Bits in diesem BitSet, deren entsprechende Bits im angegebenen BitSet gesetzt sind.
3 int cardinality( )
Gibt die Anzahl der Bits zurück, die in diesem BitSet auf true gesetzt sind.
4 void clear( )
Setzt alle Bits in diesem BitSet auf false.
5 void clear(int index)
Setzt das Bit am angegebenen Index auf false.
6 void clear(int startIndex, int endIndex)
Setzt die Bits vom angegebenen startIndex (einschließlich) bis zum angegebenen toIndex (ausschließlich) auf false.
7 Object clone( )
Klont dieses BitSet, um ein neues BitSet zu erzeugen, das ihm gleich ist.
8 boolean equals(Object bitSet)
Vergleicht dieses Objekt mit dem angegebenen Objekt.
9 void flip(int index)
Setzt das Bit am angegebenen index auf das Komplement seines aktuellen Werts.
10 void flip(int startIndex, int endIndex)
Setzt jedes Bit vom angegebenen fromIndex (einschließlich) bis zum angegebenen toIndex (ausschließlich) auf das Komplement seines aktuellen Werts.
11 boolean get(int index)
Gibt den Bitwert am angegebenen index zurück.
12 BitSet get(int startIndex, int endIndex)
Gibt ein neues BitSet zurück, das aus den Bits in diesem BitSet von fromIndex (einschließlich) bis toIndex (ausschließlich) besteht.
13 int hashCode( )
Gibt den Hashcodewert dieses BitSet zurück.
14 boolean intersects(BitSet bitSet)
Gibt true zurück, wenn im angegebenen BitSet ein Bit auf true gesetzt ist, das auch in diesem BitSet auf true gesetzt ist.
15 boolean isEmpty( )
Gibt true zurück, wenn dieses BitSet keine auf true gesetzten Bits enthält.
16 int length( )
Gibt die "logische Größe" dieses BitSet zurück: den Index des höchsten gesetzten Bits im BitSet plus 1.
17 int nextClearBit(int startIndex)
Gibt den Index des ersten auf false gesetzten Bits zurück, das am oder nach dem angegebenen Startindex auftritt.
18 int nextSetBit(int startIndex)
Gibt den Index des ersten auf true gesetzten Bits zurück, das am oder nach dem angegebenen Startindex auftritt.
19 void or(BitSet bitSet)
Führt eine logische OR-Operation an diesem Bit-Set und dem Bit-Set-Argument aus.
20 void set(int index)
Setzt das Bit am angegebenen Index auf true.
21 void set(int index, boolean v)
Setzt das Bit am angegebenen Index auf den angegebenen Wert.
22 void set(int startIndex, int endIndex)
Setzt die Bits vom angegebenen fromIndex (einschließlich) bis zum angegebenen toIndex (ausschließlich) auf true.
23 void set(int startIndex, int endIndex, boolean v)
Setzt die Bits vom angegebenen fromIndex (einschließlich) bis zum angegebenen toIndex (ausschließlich) auf den angegebenen Wert.
24 int size( )
Gibt die Anzahl der Bits an Speicherplatz zurück, die von diesem BitSet tatsächlich verwendet werden, wenn Bitwerte dargestellt werden.
25 String toString( )
Gibt eine Zeichenfolgendarstellung dieses Bitsets zurück.
26 void xor(BitSet bitSet)
Führt eine logische XOR-Operation an diesem Bitset und dem Bitset-Argument aus.

Beispiel

Das folgende Programm veranschaulicht mehrere von dieser Datenstruktur unterstützte Methoden:

Beispiel

import java.util.BitSet; public class BitSetDemo { public static void main(String args[]) { BitSet bits1 = new BitSet(16); BitSet bits2 = new BitSet(16); // einige Bits setzen for(int i=0; i<16; i++) { if((i%2) == 0) bits1.set(i); if((i%5) != 0) bits2.set(i); } System.out.println("Anfängliches Muster in bits1: "); System.out.println(bits1); System.out.println("\nAnfängliches Muster in bits2: "); System.out.println(bits2); // UND-Bits bits2.and(bits1); System.out.println("\nbits2 UND bits1: "); System.out.println(bits2); // ODER-Bits bits2.or(bits1); System.out.println("\nbits2 ODER bits1: "); System.out.println(bits2); // XOR-Bits bits2.xor(bits1); System.out.println("\nbits2 XOR bits1: "); System.out.println(bits2); } }

Das Kompilieren und Ausführen des obigen Beispiels erzeugt das folgende Ergebnis:

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

Java 数据结构Java-Datenstrukturen

Andere Erweiterungen