공부

BitSet

Huiyeong 2021. 3. 7. 03:23

BitSet이라는 클래스를 새롭게 알게되어 간단하게 정리를 해봤습니다.

 

 BitSet이란?

 Bit로 이루어진 Vector로 boolean 배열처럼 사용 가능합니다.

 boolean 배열과 다른 점은 boolean은 1byte지만 bit는 1bit이기 때문에 한 값당 7bit를 줄일 수 있습니다.

 

 관련 메서드

Set  해당 비트 true 
Get 해당 비트 값 가져옴
Flip 뒤집기
GetRange 복사

 

 예제

 - Set & Get

public static void main(String[] args) {
	BitSet bs = new BitSet();
		
	// Set & Get
	System.out.println("Set & Get\n");
	System.out.println("10 값 : "+bs.get(10));
	bs.set(10); // 해당 인덱스를 true로 변경
	System.out.println("set(10) : "+bs.get(10));
	bs.set(10, false); // 해당 인덱스를 원하는 값으로 변경
	System.out.println("set(10, false) : "+bs.get(10));
}

 출력

Set & Get

10 값 : false
set(10) : true
set(10, false) : false

 

 - Flip

public static void main(String[] args) {
	BitSet bs = new BitSet();
		
	// Flip
	System.out.println("Filp\n");
	System.out.println("get(10) : "+bs.get(10));
	bs.flip(10); // 해당 위치 값 반대로
	System.out.println("flip(10) : "+bs.get(10));
	System.out.print("flip(0, 3) 전 : ");
	for (int i=0;i<5;i++) {
		System.out.print(bs.get(i)+" ");
	}
	bs.flip(0, 3);
	System.out.print("\nflip(0, 3) 후 : ");
	for (int i=0;i<5;i++) {
		System.out.print(bs.get(i)+" ");
	}
}

 출력

Filp

get(10) : false
flip(10) : true
flip(0, 3) 전 : false false false false false 
flip(0, 3) 후 : true true true false false 

 

- GetRange

public static void main(String[] args) {
	BitSet bs = new BitSet();
		
	// GetRange
	bs.set(2, 5);
	BitSet bs2 = new BitSet(); // 새로운 객체 생성
	System.out.print("bs2 : ");
	for (int i=0;i<7;i++) {
		System.out.print(bs2.get(i)+" ");
	} 
	bs2 = bs.get(0, 5); // 값 복사
	System.out.print("\nbs2 = bs.get(0, 5) : ");
	for (int i=0;i<7;i++) {
		System.out.print(bs2.get(i)+" ");
	}
}

 출력

bs2 : false false false false false false false 
bs2 = bs.get(0, 5) : false false true true true false false