我有一个包含 10 个 boolean 值的数组 a
(或者相当于 < 1024 的数字的二进制表示形式)。我想通过以下方式将此数组与一大组相同大小的 boolean 数组 b[i]
进行比较:
如果数组 a
的元素永远不是 true
,函数 compare(a,b[i])
应返回 true
code> 当b[i]
中相同位置的元素为false
时。
以java为例
boolean compare(boolean a1, boolean a2){
for (int j = 0; j<10; j++)
if (a1[j] && !a2[j])
return false;
return true;
}
这个功能有更好的实现吗?如果将相应的二进制数视为整数 A1(和 A2)的素数分解的系数,则等效函数为
boolean compare (int A1, int A2){
if (gcd(A1,A2)==A1)
return true;
else
return false;
}
例如,( http://www.java-tips.org/java-se-tips/java.lang/finding-greatest-common-divisor-recursively.html )
int gcd(int a, int b) {
if (b==0)
return a;
else
return gcd(b, a % b);
}
但我不认为这更有效(但我可能是错的)。
有人有想法吗?欢迎所有建议!
编辑:稍后我会进行一些分析...感谢您的所有建议!
最佳答案
我不确定BitSet
效率更高,但它应该出现在要分析的实现的简短列表中。
关于java - 比较两个 boolean 数组的最有效方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6976706/