最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java?BitMap源碼仿寫實現(xiàn)

 更新時間:2022年12月22日 14:16:14   作者:洋圏外の彼女  
這篇文章主要介紹了Java?BitMap源碼仿寫實現(xiàn),所謂bitmap,就是用每一位來存放某種狀態(tài),適用于大規(guī)模數(shù)據(jù),但數(shù)據(jù)狀態(tài)又不是很多的情況。通常是用來判斷某個數(shù)據(jù)存不存在的

bitmap的作用:

用來校驗海量數(shù)字中某一個數(shù)字有沒有出現(xiàn)過,海量數(shù)據(jù)中某一個數(shù)據(jù)有沒有出現(xiàn)過

做一個長的比特數(shù)組,比特數(shù)組就會出現(xiàn)索引(0n),所有0n之間的數(shù),比如123,就把所有比特數(shù)組中索引為123的位置,由0變?yōu)?;看這個數(shù)有沒有出現(xiàn)在比特數(shù)組中,看是0還是1;0沒有出現(xiàn)過,1出現(xiàn)過;

(getIndex()方法)byte數(shù)組中每一個都代表八位;做value>>3只是確定了0,1,2,3,4,5的位置,但是不知道在里邊的空里是多少;

getPosition()方法:決定了在后面1~8中的哪個位置

private int getPosition(int value){
   // return value%8;
    return value & 0x07;
}

byte[] bits = new byte[2];

比如說:添加13

13/8 = 1;確定了索引為1的一行的內(nèi)容

13>>3; 13的二進制數(shù)是:1101 - - - > 0001

13%8 = 5;確定了是在此行的第五個位置

13 & 0x07

13 = 1101

0x07 = 0111

與操作= 0101

所以說13的位置 bits[13>>3] | 1<<(13&0x07)

1<<(13&0x07) = 1 << 5 = 0001 << = 00100000

假如說原來就是0 :00000000

或操作:00100000

package com.BitMap;
import java.util.HashSet;
import java.util.Random;
import java.util.Set;
public class MyBitMap {
    private byte[] bits;
    //byte數(shù)組中每一個數(shù)字都要代表八位
    public static final int DEFAULT_CAPACITY = 1<<10;//最大容量是1左移10位
    public MyBitMap(){
        this.bits = new byte[DEFAULT_CAPACITY];
        //System.out.println(bits.length);//輸出一下1左移10位的數(shù)字是多少
    }
    public static void main(String[] args) {
        MyBitMap map = new MyBitMap();
        Set<Integer> set = new HashSet<Integer>();
        Random random = new Random();
        for (int i = 0 ;i<800;i++){
            int i1 = random.nextInt(DEFAULT_CAPACITY);
            map.add(i1);
            set.add(i1);
        }
        for (int i = 100; i < 300; i++) {
            boolean contains = map.contains(i);
            if (contains){
                //用已知的set 來確定這個Map寫的沒問題
                if (set.contains(i)){
                    System.out.print(i + " is contains by set!!! ");
                }
                System.out.println(i + " is contains!!! ");
            }
            else {
                if (!set.contains(i)){
                    System.out.print((i + " is not contains by set !!!"));
                }
                System.out.println(i + " is not contains!");
            }
        }
    }
    public void add(int value){
        //找到value值在byte數(shù)組中的位置是在哪里
        int index = getIndex(value);
        //求余
        int position = getPosition(value);
        bits[index] |=1<<position;
    }
    public boolean contains(int value){
        int index = getIndex(value);
        int position = getPosition(value);
        return (bits[index] & 1<<position) != 0;
    }
    private int getPosition(int value){
       // return value%8;
        return value & 0x07;
    }
    //找到value值當前所在數(shù)組中的位置
    private int getIndex(int value){
        // return value/8;
        return value>>3;
        //byte數(shù)組每個數(shù)字代表八位,除以8就可以得到數(shù)組里邊的位置
    }
}

到此這篇關于Java BitMap源碼仿寫實現(xiàn)的文章就介紹到這了,更多相關Java BitMap內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Java實現(xiàn)XML格式與JSON格式互相轉換的方法

    Java實現(xiàn)XML格式與JSON格式互相轉換的方法

    這篇文章主要介紹了Java實現(xiàn)XML格式與JSON格式互相轉換的方法,方法通過實例代碼給大家介紹的非常詳細,選擇使用哪種格式通常取決于項目的需求和上下文,所以格式轉換就成了我們必備的技能,具體實現(xiàn)代碼跟隨小編一起看看吧
    2023-10-10
  • IDEA中Maven報錯Cannot resolve xxx的解決方法匯總(親測有效)

    IDEA中Maven報錯Cannot resolve xxx的解決方法匯總(親測有效)

    在IDEA中的pom文件中添加了依賴,并且正確加載了相應依賴,pom文件沒有報紅,看起來像是把所有依賴庫全部加載進來了,但是代碼中使用依賴的類庫使報紅,本文給大家介紹了IDEA中Maven報錯Cannot resolve xxx的解決方法匯總,需要的朋友可以參考下
    2024-06-06
  • 詳解Spring Boot 目錄文件結構

    詳解Spring Boot 目錄文件結構

    這篇文章主要介紹了Spring Boot 目錄文件結構的相關資料,文中示例代碼非常詳細,幫助大家更好的理解和學習,感興趣的朋友可以了解下
    2020-07-07
  • Java文件(io)編程_基于File類的基本用法(必看篇)

    Java文件(io)編程_基于File類的基本用法(必看篇)

    下面小編就為大家?guī)硪黄狫ava文件(io)編程_基于File類的基本用法(必看篇)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08
  • 使用Java發(fā)送郵件到QQ郵箱的完整指南

    使用Java發(fā)送郵件到QQ郵箱的完整指南

    在現(xiàn)代軟件開發(fā)中,郵件發(fā)送功能是一個常見的需求,無論是用戶注冊驗證、密碼重置,還是系統(tǒng)通知,郵件都是一種重要的通信方式,本文將詳細介紹如何使用Java編寫程序,實現(xiàn)發(fā)送郵件到QQ郵箱的功能,需要的朋友可以參考下
    2025-03-03
  • 淺析Spring的事務實現(xiàn)原理

    淺析Spring的事務實現(xiàn)原理

    這篇文章主要為大家詳細介紹了Spring中事務實現(xiàn)的原理,文中的示例代碼講解詳細,對我們學習Spring有一定的幫助,需要的可以參考一下
    2022-11-11
  • 詳解Java中super的幾種用法并與this的區(qū)別

    詳解Java中super的幾種用法并與this的區(qū)別

    這篇文章主要介紹了Java中super的幾種用法并與this的區(qū)別,有需要的朋友可以參考一下
    2013-12-12
  • 自定義一個異常類模板的簡單實例

    自定義一個異常類模板的簡單實例

    下面小編就為大家?guī)硪黄远x一個異常類模板的簡單實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-10-10
  • java中Optional的使用詳細解析

    java中Optional的使用詳細解析

    這篇文章主要介紹了java新特性之Optional的詳細解析,文中有非常詳細的代碼示例,對正在學習java的小伙伴們有非常好的幫助,需要的朋友可以參考下
    2021-04-04
  • Kotlin lateinit與by lazy案例詳解

    Kotlin lateinit與by lazy案例詳解

    這篇文章主要介紹了Kotlin lateinit與by lazy案例詳解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-09-09

最新評論

手机| 汉寿县| 临沧市| 岑巩县| 于都县| 延津县| 大同市| 伽师县| 静宁县| 蒙阴县| 澜沧| 梁河县| 裕民县| 类乌齐县| 福建省| 天祝| 大港区| 嫩江县| 濉溪县| 安龙县| 辽源市| 容城县| 雅安市| 红河县| 武隆县| 嘉禾县| 延川县| 仙桃市| 兴隆县| 洛南县| 陆河县| 绍兴县| 宣汉县| 简阳市| 井陉县| 平顶山市| 合水县| 茶陵县| 峡江县| 石台县| 文安县|