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 |