gpt4 book ai didi

Java:BitSet 比较

转载 作者:行者123 更新时间:2023-12-02 10:58:51 27 4
gpt4 key购买 nike

假设我们有两个 Java 中的 BitSet 对象,其值为

//<MSB....LSB>
B1:<11000101>
B2:<10111101>

如何比较B1和B2才能知道B1代表的值大于B2代表的值

逻辑运算符(>,<,==)是否为BitSet重载?或者我必须编写自己的实现吗?

更新:刚刚发现“参数类型 java.util.BitSet、java.util.BitSet 的运算符 > 未定义”。有没有内置的方法可以做到这一点?

最佳答案

您可以通过将两个集合异或放在一起,并将结果的长度与位集的长度进行比较来实现:

  • 如果xor 为空,则位集相等。您可以通过调用equals()
  • 来绕过此操作
  • 否则,xor结果的长度将等于两个值之间不同的最高有效位的位置。
  • 两个操作数中哪一个设置了该位,就是两者中较大的一个。

这是一个示例实现:

int compare(BitSet lhs, BitSet rhs) {
if (lhs.equals(rhs)) return 0;
BitSet xor = (BitSet)lhs.clone();
xor.xor(rhs);
int firstDifferent = xor.length()-1;
if(firstDifferent==-1)
return 0;

return rhs.get(firstDifferent) ? 1 : -1;
}

Demo.

关于Java:BitSet 比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27331175/

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