104-算法应用【布隆过滤器】代码实现

布隆过滤器

 


 

本文链接:https://www.cnblogs.com/cheng2839

介绍


位图,是布隆过滤器的基础


分析


布隆过滤器的思想很简单,接下来我们实现一个“位”操作的实现。


实现


下面是用java实现算法:

 

/**
 * @Description 位操作
 * @Author cheng2839
 * @Date
 * @Version v1.0
 * 本文链接 https://www.cnblogs.com/cheng2839
 */
public class $BitUtils {

    //可支持的最大bit空间(8GB)
    private static final int MAX_SIZE = 0x7FFFFFFF;
    private static int[] bitData;
//int类型代表的bit位数
private static final int BASE_BITS = 0x00000020; /** * 申请一个自定义大小的bit * @param size * @return */ public static int[] init(int size) { if (size <= 0 || size > MAX_SIZE) { throw new IllegalStateException("size is illegal or too larger :" + size); } //一个int占4字节(B),即32bit bitData = new int[size / BASE_BITS + (size % BASE_BITS == 0 ? 0 : 1)]; return bitData; } public static int getBit(int index) { return (bitData[index/BASE_BITS] >> (index % BASE_BITS)) & 1; } public static void setBit(int index, boolean flag) { bitData[index / BASE_BITS] = flag ? bitData[index / BASE_BITS] | (1 << (index % BASE_BITS)) : bitData[index / BASE_BITS] & (0xFFFFFFFF - (1 << (index % BASE_BITS))); } public static void main(String[] args) { int size = 35; init(size); setBit(0, true); setBit(32, true); setBit(32, false); for (int i = 0; i < size; i++) System.out.println(i + " : " + getBit(i)); } }

 

 
posted @ 2021-03-30 18:30  温柔的星空,让你感动  阅读(134)  评论(0)    收藏  举报