gpt4 book ai didi

java - 为什么不使用更具大小确定性的类型来实现 BitSet?

转载 作者:行者123 更新时间:2023-12-01 06:56:54 25 4
gpt4 key购买 nike

Java 引用 here表示 boolean 类型虽然用“位”信息表示,但没有精确定义的大小。相反,其他类型似乎表明大小是已定义的。例如,int 是 32 位,故事结束了。

当我们查看 BitSet 的规范时,我们可以看到它是由 boolean 值组成的。通过上面的引用,这似乎表明 BitSet 的“大小”是未定义的 - 毕竟它是由 boolean 值组成的。果然,文档指定:

Note that the size is related to the implementation of a bit set, so it may change with implementation.

所以我的问题是,为什么不使用另一种精确定义的数据类型来实现BitSet?例如,如果我们使用一个字节,我们可以保证8位的大小,并且我们不会有这样的模糊感觉:大小可能不是我们想象的那样。确实,大小必须能被 8 整除,但至少这样看起来更具大小确定性。

如果我们的系统绝对不能超过一定的内存容量,那么拥有一个大小精确的 BitSet 实现似乎很有用。

最佳答案

我认为您在概念上被方法签名使用 boolean 值的事实所困扰。

考虑单个位的最简单方法是关闭/打开,因此 boolean 值真/假是对其建模的便捷方法。另一件事完全是 BitSet 内部存储,如果你看一下 source code ,正在使用long数组并使用位掩码来调整各个位。

因此,BitSet 的大小与使用的位数密切相关。

关于java - 为什么不使用更具大小确定性的类型来实现 BitSet?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10125354/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com