SHOW CODE
public static void main(String[] args) {
Integer LENGTH = 1000000;
/**
* 初始化一个已知大小的 BitSet
* 存储100W个 bit,占用内存大小约 122.1 KB
*/
BitSet bitSet = new BitSet(LENGTH);
System.out.println("bitSet humanSizeOf begin:" + RamUsageEstimator.humanSizeOf(bitSet));
/**
* 构造100W个 Integer的Set
* 大小约占用 53.8M
*/
Set<Integer> list = Sets.newHashSet();
for (int i = 0; i < LENGTH; i++) {
list.add(i);
}
System.out.println("list size:" + list.size());
System.out.println("list humanSizeOf:" + RamUsageEstimator.humanSizeOf(list));
/**
* 将值设置到bitSet
* 大小不变
*/
for (int i = 0; i < list.size(); i++) {
bitSet.set(i, true);
}
System.out.println("bitSet humanSizeOf end:" + RamUsageEstimator.humanSizeOf(bitSet));
/**
* BitSet
* 1. 适合标识一些列连续存储的数据
* 2. 存储数据,仅有true、false之间的区别
*
* 比如:
*
* 现在工厂有100W个工人,现在需要区分下 本科生 以及 非本科生,并且按照工号开始排序打印
*/
}
依赖二方库
<dependency>
<groupId>org.apache.lucene</groupId>
<artifactId>lucene-core</artifactId>
<version>7.7.1</version>
</dependency>