将布尔数组中的所有值设置为true

时间:2014-01-01 15:54:11

标签: java arrays variables boolean

Java中是否有一个方法可以将布尔数组中的所有值设置为true?

显然我可以用for循环来做这个,但是如果我有(例如)一个大的3D数组,我想使用循环会效率很低。

Java中是否有任何方法可以将某个数组中的所有值设置为true,或者在初始化数组时将所有值设置为true?

(例如

boolean[][][] newBool = new boolean[100][100][100];
newBool.setAllTrue();

//Rather than

for(int a = 0; a < 100; a++) {
    for(int b = 0; b < 100; b++) {
        for(int c = 0; c < 100; c++) {
            newBool[a][b][c] = true;
        }
    }
}

4 个答案:

答案 0 :(得分:8)

你可以使用Java 7的Arrays.fill,它为指定数组的每个元素指定一个指定的值......就像这样。这仍然是一个循环但至少要写得更短。

boolean[] toFill = new boolean[100] {};
Arrays.fill(toFill, true);

答案 1 :(得分:2)

在这种情况下没有捷径。最好的选择是使用for循环。可能还有其他几个选项,比如在声明(!!)时设置值。或者您可以使用Arrays.fill方法,但在内部它将使用循环。或者如果可能的话,切换你的价值观。

答案 2 :(得分:0)

使用java.util.BitSet而不是布尔数组要好得多。在BitSet中,您可以在某个范围内设置值。它的内存有效,因为它使用long数组作为内部状态。

BitSet bSet = new BitSet(10);
bSet.set(0,10);

答案 3 :(得分:0)

boolean[] isPrime = new boolean[10];
 
Arrays.fill(isPrime, true);

这将为数组的所有元素赋值为真。 因为默认情况下 boolean array 的所有元素都为 false。