获取布尔数组绝对值的任何快捷方式?

时间:2013-11-27 21:09:57

标签: java arrays boolean

基本上我想要做的是在Java中找到boolean数组的绝对值。

显然我知道如何使用for-loop手动编写代码但是我想在算法中提高效率,如果有使用位操作的内置方法(或者某些东西,我没有使用位域的经验)那么可能要快得多。

BTW,当我说绝对值​​时,我的意思是如果我的数组是{true,false,false,true...}那么每个真值都会将绝对值增加1,类似于微积分中的向量。

2 个答案:

答案 0 :(得分:0)

您可以使用java.util.BitSet。它提供了一个方法cardinality,用于计算设置位数。

答案 1 :(得分:0)

我认为以下代码可以为您提供您期望的结果。

public static int countTrues(boolean[] array) 
    {
    return new Integer(StringUtils.countMatches(Arrays.toString(array).
    replace("true","1").replace("false", "0"),"1"));
    }

上面的代码使用了Commons jar中StringUtils类提供的很棒的函数。 我在一个小样本数据上试了一下。它工作正常。