1. 位图
一个int是4字节 32位,一个long类型是8字节 64位,我们可以使用1个long每一位表示一个数字 可以存储0~63 64个数字,开辟一个long类型数组就可以存储多个数字

public static class BitMap {private long[] bits;public BitMap(int max) { //最大范围 用于开辟数组空间bits = new long[(max + 64) >> 6]; // 相当(x+64) / 64}public void add(int num) {//num & 63 相对应 num % 64 只适用于2的阶乘bits[num >> 6] |= (1L << (num & 63));}public void delete(int num) {//1L << (num & 63) 的结果假设为 1000000 取反后则为 01111111bits[num >> 6] &= ~(1L << (num & 63));}public boolean contains(int num) {return (bits[num >> 6] & (1L << (num & 63))) != 0;}}
