使用固定长度

时间:2016-08-03 07:55:25

标签: java arrays dynamic

我有一个基于另一个数组大小声明的数组,并且最初所有值都设置为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?

说明我的要求是什么,但没有使用ArraylistList等,因为我发现相关的大多数答案都建议使用ArrayList。

由于

4 个答案:

答案 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 []大小是固定的,如果你想增加它的大小,你需要在一个新的数组[]中定义更大的尺寸(通常你会将原件尺寸加倍)并将原始阵列中的所有项目复制到新阵列。将索引保留在您正在使用的数组中的最后一点也是一种好习惯。