我有一个基于另一个数组大小声明的数组,并且最初所有值都设置为0,尽管动态分配的大小是固定的(等于其他数组大小),如Java所要求的那样。接下来,我有一个for
循环,其中包含某些if-else
条件。如果条件为true
,则在下一次迭代为true
的情况下,向数组第一索引添加1,然后将1添加到第二个索引并继续。
我希望稍后数组为二进制,所以如果我得到1,则表示所有条件都是true
,如果它为0,则表示条件为false
的情况。
我不赞成使用ArrayList
,我也不确定我是否可以约束ArrayList
的长度,就像我一样打印它显示大小为0。
How can I dynamically add items to a Java array?
说明我的要求是什么,但没有使用Arraylist
或List
等,因为我发现相关的大多数答案都建议使用ArrayList。
由于
答案 0 :(得分:3)
为什么不这样做:
for (int i = 0; i < arr.length; i++)
{
if ( ... )
arr[i] = 1;
else ...
if (...)
arr[i] = 1;
}
如果是嵌套循环和更复杂的逻辑,你可以这样做:
int index = 0;
boolean flag = true;
while (still have what to do)
{
for <complicated logic>
if (flag)
{
arr[index] = 1;
index++;
}
flag = true;
}
只需确保将每个条件累积到这样的标记 - flag = flag && condition
请注意您可以将条件短路 - 如果您得到一个错误,您可以跳过检查其余条件。
答案 1 :(得分:2)
for (i =0 ; i != len ; i++) arr[i] = condition
答案 2 :(得分:2)
使用BitSet作为最终的AND功能:
BitSet bits = new BitSet(array.length);
for (int i = 0; i < array.length; ++i) {
bits.set(i, ... true or false);
}
boolean allTrue = bits.cardinality() == array.length();
boolean allFalse = bits.cardinality() == 0; // Or bits.isEmpty()
答案 3 :(得分:1)
我同意ArrayList是一种简单而直接的方法。
有了它,你仍然可以使用简单的数组[],你只需要记住array []大小是固定的,如果你想增加它的大小,你需要在一个新的数组[]中定义更大的尺寸(通常你会将原件尺寸加倍)并将原始阵列中的所有项目复制到新阵列。将索引保留在您正在使用的数组中的最后一点也是一种好习惯。