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;
}
}
}
答案 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。