Содержание | Предыдущий | Следующий | Индекс

21.2 Класс java.util.BitSet

A BitSet объект является рядом битов, который растет как необходимый. Биты a BitSet индексируются неотрицательными целыми числами. Каждый бит может быть индивидуально исследован, установлен, или очищен. Один BitSet может использоваться, чтобы изменить содержание другого BitSet через логический И, логичный содержащий ИЛИ, и логические операции "исключающее ИЛИ".

public final class BitSet implements Cloneable {
	public BitSet();
	public BitSet(int nbits);
	public String toString();
	public boolean equals(Object obj)  
	public int hashCode();
	public Object clone();
	public boolean get(int bitIndex);
	public void set(int bitIndex);
	public void clear(int bitIndex);
	public void and(BitSet set);
	public void or(BitSet set);
	public void xor(BitSet set);
	public int size();
}

21.2.1 public BitSet()

Этот конструктор инициализирует недавно создаваемый BitSet так, чтобы все биты были четкими.

21.2.2 public BitSet(int nbits)

Этот конструктор инициализирует недавно создаваемый BitSet так, чтобы все биты были четкими. Достаточно пространства резервируется, чтобы явно представить биты с индексами в диапазоне 0 через nbits-1.

21.2.3 public String toString()

Для того каждого, индекса, для который это BitSet содержит немного в состоянии набора, десятичное представление того индекса включается в результат. Такие индексы перечисляются в порядке от самого низкого до самого высокого, разделенного", "(запятая и пространство) и окруженный фигурными скобками, приводящими к обычной математической нотации для ряда целых чисел.

Переопределения toString метод Object (§20.1.2).

Пример:

BitSet drPepper = new BitSet();
Теперь drPepper.toString() возвраты "{}".

drPepper.set(2);
Теперь drPepper.toString() возвраты "{2}".


drPepper.set(4);
drPepper.set(10);
Теперь drPepper.toString() возвраты "{2, 4, 10}".

21.2.4 public boolean equals(Object obj)

Результат true если и только если параметр не null и a BitSet возразите так, что для каждого неотрицательного int индекс k:

((BitSet)obj).get(k) == this.get(k)
Переопределения equals метод Object (§20.1.3).

21.2.5 public int hashCode()

Хэш-код зависит только, на котором биты были установлены в пределах этого BitSet. Алгоритм, используемый, чтобы вычислить это, может быть описан следующим образом.

Предположите биты в BitSet должны были быть сохранены в массиве long целые числа, вызванные, скажем, bits, таким способом тот бит k устанавливается в BitSet (для неотрицательных значений k) если и только если выражение:


((k>>6) < bits.length) &&
				((bits[k>>6] & (1L << (bit & 0x3F))) != 0)
истина. Затем следующее определение hashCode метод был бы корректной реализацией фактического алгоритма:


public synchronized int hashCode() {
	long h = 1234;
	for (int i = bits.length; --i >= 0; ) {
		h ^= bits[i] * (i + 1);
	}
	return (int)((h >> 32) ^ h);
}
Отметьте, что хэш-код оценивает изменения, если набор битов изменяется.

Переопределения hashCode метод Object (§20.1.4).

21.2.6 public Object clone()

Клонирование этого BitSet производит новое BitSet это равно этому.

Переопределения clone метод Object (§20.1.5).

21.2.7 public boolean get(int bitIndex)

Результат true если бит с индексом bitIndex в настоящий момент устанавливается в этом BitSet; иначе, результат false.

Если bitIndex отрицательно, IndexOutOfBoundsException бросается.

21.2.8 public void set(int bitIndex)

Бит с индексом bitIndex в этом BitSet изменяется на "набор" (true) состояние.

Если bitIndex отрицательно, IndexOutOfBoundsException бросается.

Если bitIndex не меньше чем значение, которое было бы возвращено size метод (§21.2.13), тогда размер этого BitSet увеличивается, чтобы быть больше чем bitIndex.

21.2.9 public void clear(int bitIndex)

Бит с индексом bitIndex в этом BitSet изменяется на "четкое" (false) состояние.

Если bitIndex отрицательно, IndexOutOfBoundsException бросается.

Если bitIndex не меньше чем значение, которое было бы возвращено size метод (§21.2.13), тогда размер этого BitSet увеличивается, чтобы быть больше чем bitIndex.

21.2.10 public void and(BitSet set)

Это BitSet может быть изменен, очищая некоторые из его битов. Для каждого неотрицательного int индекс k, бит k из этого BitSet очищается если бит k из set является четким.

21.2.11 public void or(BitSet set)

Это BitSet может быть изменен, устанавливая некоторые из его битов. Для каждого неотрицательного int индекс k, бит k из этого BitSet устанавливается если бит k из set устанавливается.

21.2.12 public void xor(BitSet set)

Это BitSet может быть изменен, инвертируя некоторые из его битов. Для каждого неотрицательного int индекс k, бит k из этого BitSet инвертируется если бит k из set устанавливается.

21.2.13 public int size()

Этот метод возвращает число битов пространства фактически в использовании этим BitSet представлять битовые значения.


Содержание | Предыдущий | Следующий | Индекс

Спецификация языка Java (HTML, сгенерированный Блинчиком "сюзет" Pelouch 24 февраля 1998)
Авторское право © Sun Microsystems, Inc 1996 года. Все права защищены
Пожалуйста, отправьте любые комментарии или исправления к doug.kramer@sun.com



Spec-Zone.ru - all specs in one place



free hit counter