zoukankan      html  css  js  c++  java
  • [转载备份]BitMapJAVA实现 断舍离

    public class BitMap {
        //保存数据的
        private byte[] bits;
        
        //能够存储多少数据
        private int capacity;
        
        
        public BitMap(int capacity){
            this.capacity = capacity;
            
            //1bit能存储8个数据,那么capacity数据需要多少个bit呢,capacity/8+1,右移3位相当于除以8
            bits = new byte[(capacity >>3 )+1];
        }
        
        public void add(int num){
            // num/8得到byte[]的index
            int arrayIndex = num >> 3; 
            
            // num%8得到在byte[index]的位置
            int position = num & 0x07; 
            
            //将1左移position后,那个位置自然就是1,然后和以前的数据做|,这样,那个位置就替换成1了。
            bits[arrayIndex] |= 1 << position; 
        }
        
        public boolean contain(int num){
            // num/8得到byte[]的index
            int arrayIndex = num >> 3; 
            
            // num%8得到在byte[index]的位置
            int position = num & 0x07; 
            
            //将1左移position后,那个位置自然就是1,然后和以前的数据做&,判断是否为0即可
            return (bits[arrayIndex] & (1 << position)) !=0; 
        }
        
        public void clear(int num){
            // num/8得到byte[]的index
            int arrayIndex = num >> 3; 
            
            // num%8得到在byte[index]的位置
            int position = num & 0x07; 
            
            //将1左移position后,那个位置自然就是1,然后对取反,再与当前值做&,即可清除当前的位置了.
            bits[arrayIndex] &= ~(1 << position); 
    
        }
        
        public static void main(String[] args) {
            BitMap bitmap = new BitMap(100);
            bitmap.add(7);
            System.out.println("插入7成功");
            
            boolean isexsit = bitmap.contain(7);
            System.out.println("7是否存在:"+isexsit);
            
            bitmap.clear(7);
            isexsit = bitmap.contain(7);
            System.out.println("7是否存在:"+isexsit);
        }
    }
     
    博客地址: https://www.cnblogs.com/java2sap/
    世界丰富多彩,知识天花乱坠。
    ---如果有帮到你,点个赞吧~
  • 相关阅读:
    Android中GC_EXTERNAL_ALLOC的含义
    Phonegap开发的前后台数据交互
    代码管理工具TortoiseSVN
    14款响应式前端开发框架
    简化工作流程,10款必备的HTML5开发工具
    [C#.net]处理UTF-8文件乱码
    [Oracle]ORA-14400:插入的分区关键字未映射到任何分区
    [网络]10M、100M、1000M网线的水晶头接法
    [Office]Execl取消保护密码
    SLI的相关学习
  • 原文地址:https://www.cnblogs.com/java2java/p/15632020.html
Copyright © 2011-2022 走看看