基本上我想要做的是在Java中找到boolean
数组的绝对值。
显然我知道如何使用for-loop手动编写代码但是我想在算法中提高效率,如果有使用位操作的内置方法(或者某些东西,我没有使用位域的经验)那么可能要快得多。
BTW,当我说绝对值时,我的意思是如果我的数组是{true,false,false,true...}
那么每个真值都会将绝对值增加1,类似于微积分中的向量。
答案 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类提供的很棒的函数。 我在一个小样本数据上试了一下。它工作正常。