首页 > 编程语言 > 详细

数据结构与算法之hash,bitmap简单实现

时间:2021-05-05 17:33:33      阅读:15      评论:0      收藏:0      [点我收藏+]

1.hash算法就是将目标值存储前进行打散,然后将其存储到数组中,打散的操作就是hash函数,常见的就是取模,对上限取模操作后找到其下标,然后将之存储,典型代表是jdk hashmap(hash函数非简单的取模操作),hash存在的意义就是充分利用数组随机访问的特性,将取值操作的过程时间复杂度尽可能优化到O(1)。

技术分享图片

 

2.bitmap,核心思想是充分利用到计算机的最小存储单元bit,在内部创建一个byte数组,每个数组下标对于的值都可以表示8位,以此实现存储上的压缩

2.1BitMap.java

package com.hfm.util;

import java.util.Arrays;

public class BitMap {
    byte data[];

    int len;
    public BitMap(int cap) {
        this.len = (cap>>3)+1;
        this.data = new byte[this.len];
    }

    public void add(int item){
        int index = (item>>3), loc = item%8;
        data[index] |= 1<<loc;
    }

    public boolean isPresent(int item){
        int index = (item>>3), loc = item % 8, num = 1 << loc;
        return (num & data[index]) == num ;
    }

    public static void main(String[] args) {
        BitMap map = new BitMap(100);
        map.add(1);
        map.add(11);
        map.add(19);
        map.add(89);

        for (int i = 0; i < 101; i++) {
            System.out.println(i+":"+map.isPresent(i));
        }
    }
}

说明:以上代码只是简单的操作,没有考虑数值越界后的扩容问题及并发问题,只是提供一个思路。

数据结构与算法之hash,bitmap简单实现

原文:https://www.cnblogs.com/g177w/p/14731596.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!