我们在哪里使用 BitSet,为什么要在 Java 中使用它?

Shane Khant Soe Moe

我刚刚发现java中有BitSet。已经有数组和类似的数据结构。哪里可以使用BitSet?

本征场

由于上面的答案仅解释了 BitSet 是什么,我在这里提供了有关如何使用 BitSet 以及原因的答案。起初,我不知道 BitSet 结构存在。我在 C++ 中有一个二维码生成器,出于灵活的原因,我不想使用特定的位图结构将此二维码返回给调用者。二维码只是黑白的,可以表示为一系列位。问题是在 JNI C++ 中,我必须返回表示这些位序列的字节数组,然后我必须返回位的计数。请注意,仅字节数组的大小无法判断位数。实际上,我面临着一个场景,其中我的 JNI C++ 必须返回两个值:

  • byte[] 数组
  • 位数

我的第一个解决方案是返回一个布尔数组。这个数组的内容是二维码像素,数组长度的平方根就是边长。当然这行得通,但我觉得浪费了,因为它应该是一系列位。我的下一次尝试是返回Pair<int, byte[]>对象,经过大量的头发拉扯后,我无法使其在 C++ 中工作。BitSet(145)构造来了通过返回这个BitSet对象,我传达了上面列出的两种类型的信息。但有一个小技巧如果二维码像素总共有144个像素,因为一侧是12个,那么你必须分配BitSet(145)并执行obj.set(144). 也就是说,我们引入了一个我们随后设置的人工最后一位,但最后一位不是二维码像素的一部分。这确保,BitSet::length()正确返回位计数。所以在 Kotlin 中:

var pixels:BitSet = getqrpixels(inputdata)
var pixels_len = pixels.length() - 1
var side = sqrt(pixels_len.toFloat()).toInt()
drawSquareBitmap(pixels, side)

因此,这是我对这个神秘的BitSet 的意外用例

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

什么是mockito中正在进行的存根以及我们在哪里使用它?

为什么我们需要在Java中使用移位运算符?

为什么我们在extjs中需要childEls-在哪里使用呢?

为什么我们在Java中使用clone()方法?

为什么我们需要在Java中对ArrayList使用迭代器?

我们在哪里使用JDBC?它有什么特别之处?

归一化单位,为什么我们在数值积分中使用它们?

何时允许我们在Java中使用“ new”关键字以及如何使用它?

触发器的用途是什么,谁能举例说明我们应该在哪里使用?

为什么我们在Java项目中使用rt.jar?

为什么我们不应该在Java中使用受保护的静态

为什么我们在Java中使用自动装箱和拆箱?

为什么我们在Java中使用接口引用类型?

为什么我们在Java中使用String docType?还告诉我他们的优势?

为什么要在Java卡程序中使用“ setSeed()”?

为什么要在Java中使用`transient`关键字?

为什么要在Java中使用类似的接口?

为什么要在 Java 中使用 AOT 编译?

当我没有在我的函数中使用它时,为什么我们需要 func.TimerRequest?

什么是 copyWith 以及我们如何在 Flutter 中使用它?

什么是静态方法,为什么在 Java 的 Display 类中使用它

在angularjs中,我们在哪里使用$ parent?

为什么我们需要在C ++头文件中使用“ #if defined Identifier”?

为什么我们需要在图灵的暂停证明中使用否定部分?

为什么我们需要在Inno Setup中使用#expr指令?

为什么我们需要在Html.BeginForm中使用@using

为什么我们要在 useIsMounted 钩子中使用回调来从钩子中返回 ref?

为什么我们需要在IOS中使用类别?

为什么我们需要在 ReactJs 中使用 web-pack?