본문 바로가기
공부

BitSet

by Huiyeong 2021. 3. 7.

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 

 

'공부' 카테고리의 다른 글

Union-find 알고리즘  (0) 2021.03.21
Dynamic Programming(동적계획법) 알고리즘  (0) 2021.03.19