java - java中BitSet的nextClearBit()实际上是如何工作的?

标签 java bitset

BitSet 类中的该方法用于返回第一个设置为 false 的位的索引

import java.util.BitSet;
public class BitSetDemo {
   public static void main(String[] args) {
      BitSet b = new BitSet();
      b.set(5);
      b.set(9);
      b.set(6);
      System.out.println(""+b);
      System.out.println(b.nextClearBit(5));
      System.out.println(b.nextClearBit(9)); 
     }
   }
 Output :
 {5, 6, 9}
 7
 10

在此代码中,6 在 9 之后设置,但它表明这些值是连续存储的((b.nextClearBit(5) 返回下一个值,即 7)。那么,BitSet 如何存储这些值?

最佳答案

nextClearBit 的 javadoc说:

Returns the index of the first bit that is set to false that occurs on or after the specified starting index.

您已将 5、6 和 9 设置为 true。也就是说,从5开始,第一个设置为false的索引是7。而从9开始,第一个设置为false的索引是10。根据你自己的输出,这也是返回的内容。

如果你想知道如何BitSet工作原理以及它的作用,请阅读其 Javadoc 并查看源代码。它包含在 JDK 中。

关于java - java中BitSet的nextClearBit()实际上是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53694377/

相关文章:

java - 将数据从 JSON ArrayList 加载到微调器中

java - 如何将文本从 Java 应用程序复制到写字板

java - 我收到异常 BindingResult 和 bean 名称 'studentRegistration' 的普通目标对象都可用作 spring 中的请求属性

c++ - 用整数值更新dynamic_bitset

java - BitSet 与整数/长整数

c++ - 迭代std::bitset中真实位的有效方法?

c++ - 使用 bitset 代替手写位操作代码?

java - 如何在Java中为自定义堆栈类编写打印函数?

c++ - 如何划分位集?

java - 最新的 Spring Boot 升级抛出 SecurityProperties 中的无效属性“text[加密]”