我有一个array的boolean条目:
boolean[] myBooleanArray = new boolean[24];
Run Code Online (Sandbox Code Playgroud)
目前我检查它是否包含如此真实:
Arrays.asList(myBooleanArray).contains(true);
Run Code Online (Sandbox Code Playgroud)
这是检查布尔数组的最快方法吗?如果没有,执行此检查的最快方法是什么?
编辑:
我通过在Android 4.03 Samsung S2设备上将其作为应用程序运行,将您的答案中的方法计时如下:
boolean[] myBooleanArray = new boolean[24];
long startTime = System.nanoTime();
suggestedMethod(myBooleanArray);
long endTime = System.nanoTime();
long duration = endTime - startTime;
Log.i("timetest", Long.toString(duration));
Run Code Online (Sandbox Code Playgroud)
时间排名超过五次,最快的是:
在5334和11584 ns之间:
for (boolean value : myBooleanArray) {
if (value) {
return true;
}
}
return false;
Run Code Online (Sandbox Code Playgroud)在160542和171417 ns之间:
Arrays.asList(myBooleanArray).contains(true);
Run Code Online (Sandbox Code Playgroud)在191833和205750之间ns:
Booleans.contains(myBooleanArray, true);
Run Code Online (Sandbox Code Playgroud)Jig*_*shi 11
只需遍历数组
for(boolean value: myBooleanArray){
if(value){ return true;}
}
return false;
Run Code Online (Sandbox Code Playgroud)
如果您使用的是Guava库(它有很多有用的东西):
Booleans.contains(myBooleanArray, true);
Run Code Online (Sandbox Code Playgroud)
(JavaDoc)
该方法的文档也描述了另一种方法.你可以更换boolean[]一个BitSet(应该是更多的内存效率),并调用!bitSet.isEmpty()检查至少一个位是否为真.
| 归档时间: |
|
| 查看次数: |
16020 次 |
| 最近记录: |