본문 바로가기

자바

bitset

BitSet은 Bit들로 이루어진 vector로, boolean 배열처럼 이용할 수 있다. boolean 배열에 비해 갖는 이점은 boolean 값은 1byte를 잡아먹지만 bit는 말그대로 1bit이다. 한 값당 7bit씩 아낄 수 있다. 자주 이용되는 메소드들을 예제를 통해 알아보자.

 

Set & Get

 

package bitset;

import java.util.BitSet;

public class Main {

	public static void main(String[] args) {
		
		BitSet b = new BitSet();
		b.set(10);
		b.set(100);
		
		System.out.println(b.get(10));
		System.out.println(b.get(100));
		System.out.println(b.get(0));
	}
}

 

10번째, 100번째 인덱스 값의 bit를 true로 설정하고, get을 이용해 그 값들을 가져온 것. 추가적으로 boolean 값을 주면 false로도 설정이 가능하다.

 

Flip

package bitset;

import java.util.BitSet;

public class Main01 {

	public static void main(String[] args) {
		
		BitSet b = new BitSet();
		b.set(2);
		
		System.out.println(b.get(2));
		b.flip(2);
		
		System.out.println(b.get(2));
	}
}

flip. 말그대로 뒤집는다 생각하면 된다. 단, 원래 값이 뭔지 알고 있을 때야 뒤집기도 가능하다.

 

Get Range

package bitset;

import java.util.BitSet;

public class Main02 {

	public static void main(String[] args) {
		
		BitSet b = new BitSet();
		b.set(3);
		b.set(5);
		
		BitSet b2 = b.get(3, 6);
		
		for(int i = 0; i < 5; i++) {
			
			System.out.println(b2.get(i));
		}
	}
}

get에서 지정한 startIndex와 endIndex를 바탕으로 아예 새로운 BitSet을 만든다.

b2의 1번째는 b의 3번째, b2의 2번째는 b의 4번째

 

출처:

medium.com/@pyeonjy97/bitset%EC%9D%B4%EB%9E%80-4c5f16af918a

 

BitSet이란?

BitSet은 Bit들로 이루어진 vector로, boolean 배열처럼 이용할 수 있다. boolean 배열에 비해 갖는 이점은 boolean 값은 1byte를 잡아먹지만 bit는 말그대로 1bit다! 한 값당 7bit씩 아낄 수 있다. 자주…

medium.com

 

 

 

 

'자바' 카테고리의 다른 글

Holder 패턴  (0) 2020.11.15
@PostConstruct  (0) 2020.11.15
Spring Singleton환경에서의 주의 사항  (0) 2020.11.12
Spring Bean의 개념과 Bean Scope 종류  (0) 2020.11.12
영속성  (0) 2020.11.12