比较两个布尔数组的最有效方法是什么?

Tom*_*Tom 2 java arrays compare

我有一个a10个布尔数组(或等价数字<1024的二进制表示).我想这个数组比较大集阵列b[i]通过以下方式相同大小的布尔值:该函数compare(a,b[i])将返回true如果数组中的元素a是永远 true当在同一位置的元素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;
}
Run Code Online (Sandbox Code Playgroud)

有没有更好的实现这个功能?如果将相应的二进制数视为整数A1(和A2)的素数分解的系数,则等效函数将是

boolean compare (int A1, int A2){
if (gcd(A1,A2)==A1) 
   return true;
else
   return false;
}
Run Code Online (Sandbox Code Playgroud)

例如,(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);
}
Run Code Online (Sandbox Code Playgroud)

但我不认为这更有效(但我可能错了).

有没有人有想法?欢迎所有建议!

编辑:我稍后会回过头来进行一些分析......感谢您的所有建议!

tra*_*god 8

我不确定它BitSet是否更有效,但它应该在简短的实现配置列表中.


小智 6

如果你可以使用整数而不是数组,为什么不只是:

return ((a1 & ~a2) == 0)
Run Code Online (Sandbox Code Playgroud)