学习BitSet集合中set方法的小结

本文主要探讨Java中的BitSet类,其利用long数组存储布尔值,每个long代表64个位。BitSet的set方法通过位运算快速定位并设置值。在set方法中,1L << bitIndex用于定位bit位置,当bitIndex超过64时,会有特定处理。文章建议阅读《Hacker’s Delight》以深入理解位运算,并提供了一个bitSet.set(128)的例子来说明操作过程。
摘要由CSDN通过智能技术生成

BitSet保存的是一个对应位置的布尔值,内部采用的是long类型的数组进行实现。那么它就是如何实现快速定位到对应的元素呢,我们对于源码进行分析,就可以见一二。
首先,打开BitSet的源码,查找到有一个属性值long[] words

    /**
     * The internal field corresponding to the serialField "bits".
     * 内部的字段类似处理连续的“位”
     */
    private long[] words;

内部的元素的布尔值是利用bit进行表示的,在数组当中,一个long的值就代表的是64个布尔值。在内部定义了常量的信息:

    /*
     * BitSets are packed into arrays of "words."  Currently a word is
     * a long, which consists of 64 bits, requiring 6 address bits.
     * The choice of word size is determined purely by performance concerns.
     * BitSets 被存储在数组words中。一个
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值