JavaTM Platform
Standard Ed. 6

java.util
클래스 BitSet

java.lang.Object 
  상위를 확장 java.util.BitSet
모든 구현된 인터페이스:
Serializable , Cloneable


public class BitSet
extends Object
implements Cloneable , Serializable

이 클래스는, 필요에 따라서 커지는 비트 벡터를 구현합니다. 비트 세트의 각 요소는,boolean 치를 가집니다. BitSet 의 비트에는, 부가 아닌 정수의 인덱스를 붙일 수 있습니다. 인덱스를 붙일 수 있던 개별의 비트는, 시험하거나 설정하거나 클리어 하거나 할 수 있습니다. 또, 논리적, 포함적 논리합, 및 배타적 논리합의 연산을 실시하면, 어느 BitSet 를 사용해 다른 BitSet 의 내용을 변경할 수 있습니다.  

디폴트에서는, 세트의 모든 비트는 초기치로서 false 를 가집니다.  

비트 세트의, 현재의 사이즈는, 그 비트 세트에 의해 현재 사용되고 있는 스페이스의 비트수입니다. 이 사이즈는 비트 세트의 구현과 관련하므로, 사이즈는 구현에 의해 바뀌는 경우가 있습니다. 비트 세트의 길이는 비트 세트의 논리적인 길이와 관련해, 구현과는 관계없이 정의됩니다.  

특히 명기되어 있지 않은 한, null 파라미터를 BitSet 의 메소드에 건네주면(자),NullPointerException 가 throw 됩니다.

BitSet 가, 외부의 동기화를 실시하지 않고 multi-thread를 사용하는 것은 안전하지는 않습니다.

도입된 버젼:
JDK1. 0
관련 항목:
직렬화 된 형식

생성자 의 개요
BitSet ()
          신규 비트 세트를 작성합니다.
BitSet (int nbits)
          0 ~ nbits-1 의 범위의 인덱스를 가지는 비트를 명시적으로 나타내기 위해서(때문에) 충분한 초기 사이즈를 가지는 비트 세트를 작성합니다.
 
메소드의 개요
 void and (BitSet  set)
          타겟 비트 세트와 인수 비트 세트의논리츠무를 잡습니다.
 void andNot (BitSet  set)
          대응하는 비트가 지정된 BitSet 로 설정되어 있는,BitSet 의 비트를 모두 클리어 합니다.
 int cardinality ()
          이 BitSet 로,true 로 설정된 비트의 수를 돌려줍니다.
 void clear ()
          이 BitSet 의 비트를 모두 false 로 설정합니다.
 void clear (int bitIndex)
          인덱스로 지정된 비트를 false 로 설정합니다.
 void clear (int fromIndex, int toIndex)
          지정된 fromIndex (inclusive)로부터 지정된 toIndex (exclusive)까지, 비트를 false 로 설정합니다.
 Object clone ()
          BitSet 를 복제하는 것으로, 동등한 새로운 BitSet 를 작성합니다.
 boolean equals (Object  obj)
          객체와 지정된 객체를 비교합니다.
 void flip (int bitIndex)
          현재가의 보수로 지정된 인덱스의 비트를 설정합니다.
 void flip (int fromIndex, int toIndex)
          지정된 fromIndex (inclusive)로부터 지정된 toIndex (exclusive)까지, 각 비트를 그 현재가의 보수로 설정합니다.
 boolean get (int bitIndex)
          지정된 인덱스를 가지는 비트의 값을 돌려줍니다.
 BitSet get (int fromIndex, int toIndex)
          이 BitSet 로부터의 비트로 구성되는 신규 BitSetfromIndex (이 값을 포함한다)로부터 toIndex (이 값을 포함하지 않는다)까지 돌려줍니다.
 int hashCode ()
          비트 세트의 해시 코드값를 돌려줍니다.
 boolean intersects (BitSet  set)
          이 BitSet 에서도 true 로 설정된,true 설정의 비트가, 지정된 BitSet 에 있는 경우, true 를 돌려줍니다.
 boolean isEmpty ()
          이 BitSettrue 로 설정된 비트가 포함되지 않은 경우는, true 를 돌려줍니다.
 int length ()
          BitSet 의 「논리 사이즈」, 즉 BitSet 의 최상정도 세트 비트의 인덱스에 1 을 더한 값을 돌려줍니다.
 int nextClearBit (int fromIndex)
          지정된 개시 인덱스시, 또는 그 인덱스 후에 생기는 false 로 설정된 최초의 비트의 인덱스를 돌려줍니다.
 int nextSetBit (int fromIndex)
          지정된 개시 인덱스시, 또는 그 인덱스 후에 생기는 true 로 설정된 최초의 비트의 인덱스를 돌려줍니다.
 void or (BitSet  set)
          비트 세트와 비트 세트 인수의논리합을 취합니다.
 void set (int bitIndex)
          지정된 인덱스의 비트를 true 로 설정합니다.
 void set (int bitIndex, boolean value)
          지정된 인덱스의 비트가 지정된 값으로 설정합니다.
 void set (int fromIndex, int toIndex)
          지정된 fromIndex (inclusive)로부터 지정된 toIndex (exclusive)까지, 비트를 true 로 설정합니다.
 void set (int fromIndex, int toIndex, boolean value)
          지정된 fromIndex (inclusive)로부터 지정된 toIndex (exclusive)까지, 비트가 지정된 값으로 설정합니다.
 int size ()
          BitSet 로 비트치를 나타내기 위해서(때문에) 실제로 사용하고 있는 비트의 수를 돌려줍니다.
 String toString ()
          비트 세트의 캐릭터 라인 표현을 돌려줍니다.
 void xor (BitSet  set)
          비트 세트와 비트 세트 인수의배타적 논리합을 취합니다.
 
클래스 java.lang. Object 로부터 상속된 메소드
finalize , getClass , notify , notifyAll , wait , wait , wait
 

생성자 의 상세

BitSet

public BitSet()
신규 비트 세트를 작성합니다. 비트의 초기치는 모두 false 입니다.


BitSet

public BitSet(int nbits)
0 ~ nbits-1 의 범위의 인덱스를 가지는 비트를 명시적으로 나타내기 위해서(때문에) 충분한 초기 사이즈를 가지는 비트 세트를 작성합니다. 비트의 초기치는 모두 false 입니다.

파라미터:
nbits - 비트 세트의 초기 사이즈
예외:
NegativeArraySizeException - 지정된 초기 사이즈가 부의 경우
메소드의 상세

flip

public void flip(int bitIndex)
현재가의 보수로 지정된 인덱스의 비트를 설정합니다.

파라미터:
bitIndex - 반전하는 비트의 인덱스
예외:
IndexOutOfBoundsException - 지정된 인덱스가 부의 경우
도입된 버젼:
1.4

flip

public void flip(int fromIndex,
                 int toIndex)
지정된 fromIndex (inclusive)로부터 지정된 toIndex (exclusive)까지, 각 비트를 그 현재가의 보수로 설정합니다.

파라미터:
fromIndex - 반전하는 최초의 비트의 인덱스
toIndex - 반전하는 마지막 비트의 뒤의 인덱스
예외:
IndexOutOfBoundsException - fromIndex 가 0 보다 작은 값의 경우,toIndex 가 0 보다 작은 값의 경우, 또는 fromIndextoIndex 보다 큰 경우
도입된 버젼:
1.4

set

public void set(int bitIndex)
지정된 인덱스의 비트를 true 로 설정합니다.

파라미터:
bitIndex - 비트 인덱스
예외:
IndexOutOfBoundsException - 지정된 인덱스가 부의 경우
도입된 버젼:
JDK1. 0

set

public void set(int bitIndex,
                boolean value)
지정된 인덱스의 비트가 지정된 값으로 설정합니다.

파라미터:
bitIndex - 비트 인덱스
value - 설정되는 boolean 치
예외:
IndexOutOfBoundsException - 지정된 인덱스가 부의 경우
도입된 버젼:
1.4

set

public void set(int fromIndex,
                int toIndex)
지정된 fromIndex (inclusive)로부터 지정된 toIndex (exclusive)까지, 비트를 true 로 설정합니다.

파라미터:
fromIndex - 설정하는 최초의 비트의 인덱스
toIndex - 설정되는 마지막 비트의 뒤의 인덱스
예외:
IndexOutOfBoundsException - fromIndex 가 0 보다 작은 값의 경우,toIndex 가 0 보다 작은 값의 경우, 또는 fromIndextoIndex 보다 큰 경우
도입된 버젼:
1.4

set

public void set(int fromIndex,
                int toIndex,
                boolean value)
지정된 fromIndex (inclusive)로부터 지정된 toIndex (exclusive)까지, 비트가 지정된 값으로 설정합니다.

파라미터:
fromIndex - 설정하는 최초의 비트의 인덱스
toIndex - 설정되는 마지막 비트의 뒤의 인덱스
value - 선택된 비트를 설정하는 값
예외:
IndexOutOfBoundsException - fromIndex 가 0 보다 작은 값의 경우,toIndex 가 0 보다 작은 값의 경우, 또는 fromIndextoIndex 보다 큰 경우
도입된 버젼:
1.4

clear

public void clear(int bitIndex)
인덱스로 지정된 비트를 false 로 설정합니다.

파라미터:
bitIndex - 클리어 하는 비트의 인덱스
예외:
IndexOutOfBoundsException - 지정된 인덱스가 부의 경우
도입된 버젼:
JDK1. 0

clear

public void clear(int fromIndex,
                  int toIndex)
지정된 fromIndex (inclusive)로부터 지정된 toIndex (exclusive)까지, 비트를 false 로 설정합니다.

파라미터:
fromIndex - 클리어 하는 최초의 비트의 인덱스
toIndex - 클리어 되는 마지막 비트의 뒤의 인덱스
예외:
IndexOutOfBoundsException - fromIndex 가 0 보다 작은 값의 경우,toIndex 가 0 보다 작은 값의 경우, 또는 fromIndextoIndex 보다 큰 경우
도입된 버젼:
1.4

clear

public void clear()
이 BitSet 의 비트를 모두 false 로 설정합니다.

도입된 버젼:
1.4

get

public boolean get(int bitIndex)
지정된 인덱스를 가지는 비트의 값을 돌려줍니다. 이 BitSetbitIndex 의 인덱스를 가지는 비트가 설정되어 있는 경우, 값은 true 입니다. 그렇지 않은 경우는 false 입니다.

파라미터:
bitIndex - 비트 인덱스
반환값:
지정된 인덱스를 가지는 비트의 값
예외:
IndexOutOfBoundsException - 지정된 인덱스가 부의 경우

get

public BitSet  get(int fromIndex,
                  int toIndex)
BitSet 로부터의 비트로 구성되는 신규 BitSetfromIndex (이 값을 포함한다)로부터 toIndex (이 값을 포함하지 않는다)까지 돌려줍니다.

파라미터:
fromIndex - 짜넣는 최초의 비트의 인덱스
toIndex - 짜넣는 마지막 비트의 뒤의 인덱스
반환값:
BitSet 의 범위로부터의 신규 BitSet
예외:
IndexOutOfBoundsException - fromIndex 가 0 보다 작은 값의 경우,toIndex 가 0 보다 작은 값의 경우, 또는 fromIndextoIndex 보다 큰 경우
도입된 버젼:
1.4

nextSetBit

public int nextSetBit(int fromIndex)
지정된 개시 인덱스시, 또는 그 인덱스 후에 생기는 true 로 설정된 최초의 비트의 인덱스를 돌려줍니다. 해당하는 비트가 존재하지 않는 경우는,-1 이 돌려주어집니다. BitSet 내의 true 비트에 대해서 반복 처리를 실행하는 경우는, 이하의 루프를 사용합니다.
 for (int i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i+1)) {
     // operate on index i here
 }

파라미터:
fromIndex - 체크를 개시하는 위치의 인덱스 (그 값도 포함한다)
반환값:
다음세트 비트의 인덱스
예외:
IndexOutOfBoundsException - 지정된 인덱스가 부의 경우
도입된 버젼:
1.4

nextClearBit

public int nextClearBit(int fromIndex)
지정된 개시 인덱스시, 또는 그 인덱스 후에 생기는 false 로 설정된 최초의 비트의 인덱스를 돌려줍니다.

파라미터:
fromIndex - 체크를 개시하는 위치의 인덱스 (그 값도 포함한다)
반환값:
다음의 클리어 비트의 인덱스
예외:
IndexOutOfBoundsException - 지정된 인덱스가 부의 경우
도입된 버젼:
1.4

length

public int length()
BitSet 의 「논리 사이즈」, 즉 BitSet 의 최상정도 세트 비트의 인덱스에 1 을 더한 값을 돌려줍니다. BitSet 에 세트 비트가 없는 경우는 제로를 돌려줍니다.

반환값:
BitSet 의 논리 사이즈
도입된 버젼:
1.2

isEmpty

public boolean isEmpty()
BitSettrue 로 설정된 비트가 포함되지 않은 경우는, true 를 돌려줍니다.

반환값:
BitSet 가 빈 상태(empty)인가 어떤가를 나타내는 boolean 형
도입된 버젼:
1.4

intersects

public boolean intersects(BitSet  set)
BitSet 에서도 true 로 설정된,true 설정의 비트가, 지정된 BitSet 에 있는 경우, true 를 돌려줍니다.

파라미터:
set - 교차하는 BitSet
반환값:
BitSet 가 지정된 BitSet 와 교차할지 어떨지를 나타내는 boolean 형
도입된 버젼:
1.4

cardinality

public int cardinality()
BitSet 로,true 로 설정된 비트의 수를 돌려줍니다.

반환값:
BitSettrue 로 설정된 비트의 수
도입된 버젼:
1.4

and

public void and(BitSet  set)
타겟 비트 세트와 인수 비트 세트의논리츠무를 잡습니다. 이 비트 세트의 각 비트의 초기치가 true 로, 비트 세트 인수의 대응하는 비트의 초기치도 true 의 경우에 한해, 이 비트 세트가 변경되어 그 각 비트의 값이 true 가 됩니다.

파라미터:
set - 비트 세트

or

public void or(BitSet  set)
비트 세트와 비트 세트 인수의논리합을 취합니다. 이 비트 세트의 비트의 값이 true 였는지, 비트 세트 인수의 대응하는 비트의 값이 true 인 경우에 한해, 이 비트 세트가 변경되어 그 비트의 값이 true 가 됩니다.

파라미터:
set - 비트 세트

xor

public void xor(BitSet  set)
비트 세트와 비트 세트 인수의배타적 논리합을 취합니다. 다음의 몇개의 조건이 성립되는 경우에 한해, 이 비트 세트가 변경되어 그 비트의 값이 true 가 됩니다.

파라미터:
set - 비트 세트

andNot

public void andNot(BitSet  set)
대응하는 비트가 지정된 BitSet 로 설정되어 있는,BitSet 의 비트를 모두 클리어 합니다.

파라미터:
set - 이 BitSet 를 마스크하기 위한 BitSet
도입된 버젼:
1.2

hashCode

public int hashCode()
비트 세트의 해시 코드값를 돌려줍니다. 해시 코드는, 이 BitSet 내로 설정되어 있는 비트에 의해서만 정해집니다. 해시 코드를 계산하는 알고리즘은, 다음과 같이 기술할 수 있습니다.

예를 들어,words 라고 하는 long 형 정수치의 배열에,BitSet 의 비트가 포함된다고 합니다. 그리고,k 가 부가 아닌 값으로,

((k>>6) < words.length) && ((words[k>>6] & (1L << (bit & 0x3F))) ! = 0)
그렇다고 하는 식이 성립되는 경우에 한해,BitSet 에 비트 k 가 설정됩니다. 이 경우, 다음과 같이 hashCode 메소드를 정의하면(자), 실제의 알고리즘의 올바른 구현이 됩니다.
 public int hashCode() {
      long h = 1234;
      for (int i = words.length; --i >= 0; ) {
           h ^= words[i] * (i + 1);
      }
      return (int)((h >> 32) ^ h);
 }
비트의 설정이 바뀌면(자), 해시 코드값는 변경됩니다.  

이 메소드는,ObjecthashCode 메소드를 오버라이드(override) 합니다.

오버라이드(override):
클래스 Object 내의 hashCode
반환값:
이 비트 세트의 해시 코드값
관련 항목:
Object.equals(java.lang.Object) , Hashtable

size

public int size()
BitSet 로 비트치를 나타내기 위해서(때문에) 실제로 사용하고 있는 비트의 수를 돌려줍니다. 이 세트로 최대의 요소는 「사이즈」로, 이것이 제일 요소입니다.

반환값:
비트 세트에 현재 있는 비트의 수

equals

public boolean equals(Object  obj)
객체와 지정된 객체를 비교합니다. 인수가 null 는 아니고, 이 비트 세트와 완전히 같은 true 의 비트세트를 가지는 Bitset 객체인 경우에 한해, 결과는 true 입니다. 즉, 부가 아닌 int 형의 인덱스 k 에 대해서,
((BitSet) obj). get(k) == this.get(k)
하지만 성립되지 않으면 안됩니다. 2 개의 비트 세트의 현재의 사이즈는 비교되지 않습니다.  

이 메소드는,Objectequals 메소드를 오버라이드(override) 합니다.

오버라이드(override):
클래스 Object 내의 equals
파라미터:
obj - 비교 대상의 객체
반환값:
객체가 같은 경우는 true, 그렇지 않은 경우는 false
관련 항목:
size()

clone

public Object  clone()
BitSet 를 복제하는 것으로, 동등한 새로운 BitSet 를 작성합니다. 이 비트 세트의 복제는, 이 비트 세트와 완전히 같은 true 의 비트를 가집니다.

이 메소드는,Objectclone 메소드를 오버라이드(override) 합니다.

오버라이드(override):
클래스 Object 내의 clone
반환값:
이 비트 세트의 복제
관련 항목:
size()

toString

public String  toString()
비트 세트의 캐릭터 라인 표현을 돌려줍니다. 이 BitSet 로 비트가 설정 상태로 보관 유지되고 있는 인덱스 마다, 그 인덱스의 10 진표현이 결과에 포함됩니다. 이러한 인덱스는, 최하정도로부터 최상정도의 순서로 나란해질 수 있고, 「,  」(콤마와 스페이스)로 단락지어 안괄호로 둘러싸입니다. 이 때문에, 정수 세트의 일반적으로의 수치 표기가 됩니다.

ObjecttoString 메소드를 오버라이드(override) 합니다.  

예:

BitSet drPepper = new BitSet();
drPepper.toString() 가 「{}」을 돌려줍니다.

drPepper.set(2);
drPepper.toString() 가 「{2}」를 돌려줍니다.

drPepper.set(4);
drPepper.set(10);
drPepper.toString() 가 「{2, 4, 10}」을 돌려줍니다.

오버라이드(override):
클래스 Object 내의 toString
반환값:
이 비트 세트의 캐릭터 라인 표현

JavaTM Platform
Standard Ed. 6

버그의 보고와 기능의 요청
한층 더 자세한 API 레퍼런스 및 개발자 문서에 대해서는,Java SE 개발자용 문서를 참조해 주세요. 개발자전용의 상세한 해설, 개념의 개요, 용어의 정의, 버그의 회피책, 및 코드 실례가 포함되어 있습니다.

Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy 도 참조해 주세요.