BitSet: 정수를 표현하고 두 집합의 교집합, 합집합 등의 연산을 수행하는 데 사용할 수 있는 바이트 집합입니다.
컴퓨터 저장의 최소 단위는 비트이고, 우리 자바 프로그램의 최소 단위는 바이트(Byte)인 것으로 알고 있습니다. 이들 간의 변환 관계는 1Byte=8bit입니다. BitSet은 비트 위치에 따른 정수 데이터의 크기를 나타냅니다. 예를 들어 16은 16번째 위치에 있고 5는 5번째 위치에 있으므로 다음 BitSet은 소스 코드를 분석하여 집합 {5,16}
을 나타낼 수 있습니다. BitSet의 경우, 우리는 BitSet이 두 개의 생성자를 제공한다는 것을 알고 있습니다. 하나는 매개 변수가 없는 BitSet()이고 다른 하나는 BitSet(int nbits)입니다. 매개 변수 없이 생성자를 사용하여 BitSet 객체를 생성하는 경우 기본 길이는 64비트입니다. Object를 생성하면 이 객체가 표현할 수 있는 데이터의 크기는 1~64인데, BitSet이 스스로 커지기 때문에 64보다 큰 데이터를 넣어도 문제가 되지 않으며 최대값은 Integer.MAX_VALUE=2147483647이 될 수 있습니다. .
표현 방법을 알면 그 기능을 이해하는 것은 어렵지 않습니다. 예를 들어 위 집합과 {2,23,48}의 합집합이 발견되면 비트 코딩된 OR 연산이 됩니다.
00000000 00000000 00000000 00000000 00000000 00000000 10000000 00100000 컬렉션 {5,16}
00000000 00000000 100 00000 00000000 00000000 01000000 00000000 00000010 {2,23,48}
설정 또는 연산 최종 결과는
00000000 10000000 00000000 00000000 01000000 10000000 00100010이므로 결과는 {2,5,16,23,48}
다른 큰 숫자는 없고 그냥 비트코드 업데이트만 길어요.
참고:
최대 자릿수로 BitSet 세트를 생성하는 경우 BitSet bitSet = new BitSet(Integer.MAX_VALUE);
오류
스레드 "main"의 예외 java.lang.OutOfMemoryError: Java 힙 공간
at java.util.BitSet.initWords(BitSet.java:144)
at java.util.BitSet.
at Test.main(Test.java:10)
이는 Java 힙 힙이 메모리가 부족합니다.
java.lang.OutOfMemoryError: Java heap space error
보고 시 이렇게 변경할 수도 있습니다.