检查布尔数组是否包含true的最快方法 [英] Fastest way to check if an array of boolean contains true

查看:64
本文介绍了检查布尔数组是否包含true的最快方法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个 boolean 项的 array :

boolean[] myBooleanArray = new boolean[24];

目前,我正在检查它是否包含true,如下所示:

Currently i check if it contains true like so:

Arrays.asList(myBooleanArray).contains(true);

这是检查布尔数组的最快方法吗?如果没有,执行此检查的最快方法是什么?

Is this the fastest way to check an array of boolean? If not, what is the fastest way to perform this check?

通过在Android 4.03 Samsung S2设备上将其作为应用程序运行,我对您的答案中的方法进行了计时,如下所示:

I timed the methods in your answers as follows by running it as an app on an Android 4.03 Samsung S2 device:

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));

在五次跑步中的时间排名是第一,速度最快:

Time ranking over five runs were, with fastest first:

  1. 在5334到11584 ns之间:

  1. Between 5334 and 11584 ns:

for (boolean value : myBooleanArray) {
    if (value) {
        return true;
    }
}
return false;

  • 在160542和171417 ns之间:

  • Between 160542 and 171417 ns:

    Arrays.asList(myBooleanArray).contains(true);
    

  • 在191833和205750 ns之间:

  • Between 191833 and 205750 ns:

    Booleans.contains(myBooleanArray, true);
    

  • 推荐答案

    只需遍历数组

    for(boolean value: myBooleanArray){
      if(value){ return true;}
    }
    return false;
    

    这篇关于检查布尔数组是否包含true的最快方法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

    查看全文
    登录 关闭
    扫码关注1秒登录
    发送“验证码”获取 | 15天全站免登陆