Java中检查布尔数组的最快方法
所以,我有一系列布尔值,我试图找出其中是否至少有一个“真”。最快的计算方法是什么?将布尔数组更改为字节数组(或其他类型)会有任何帮助吗?最快的方法是遍历数组:Java中检查布尔数组的最快方法,java,arrays,boolean-operations,Java,Arrays,Boolean Operations,所以,我有一系列布尔值,我试图找出其中是否至少有一个“真”。最快的计算方法是什么?将布尔数组更改为字节数组(或其他类型)会有任何帮助吗?最快的方法是遍历数组: for (boolean element : array){ if (element) { return true; } } return false; 当然是O(n)。“将布尔数组更改为字节数组(或其他类型)会有任何帮助吗?”这会有什么帮助?你的意思是在检查的时候,它肯定不会更快。您是否在询问是否有更好的数据结构?
for (boolean element : array){
if (element) {
return true;
}
}
return false;
当然是O(n)。“将布尔数组更改为字节数组(或其他类型)会有任何帮助吗?”这会有什么帮助?你的意思是在检查的时候,它肯定不会更快。您是否在询问是否有更好的数据结构?@matt如果在另一种类型中使用每布尔值1位,您可以通过一次比较检查8位(字节)或最多64位(长),例如,当另一种类型的值不为0时,至少有一个“真”位。@matt我对OP的理解“将布尔数组更改为字节数组”(或其他类型的)帮助?“他首先会使用不同的数组来存储布尔值,而不是在检查之前转换它们。@Lucero这是我问题的重点。在布尔值[]上使用长[]可能会略微增加,但根据数据的性质,使用诸如位集之类的东西可能会快得多。实际上,我发现array.misch比循环快一点。深入源代码兔子洞会导致使用不安全的方法将数据强制转换到长时间并进行评估。