在循环中向数组添加值

时间:2014-03-16 01:50:27

标签: java arrays arraylist

在我的程序中,我正在尝试在循环时向数组添加值。在将它放入数组之前,它必须满足if语句。我需要能够根据输入添加所需数量的值。我不知道该怎么做。任何帮助将不胜感激。

for(int a=0; a<= subset1white.length-1;a++){
  String w = Integer.toString(Integer.parseInt(subset1white[a]) + 2);
  String x = Integer.toString(Integer.parseInt(subset1white[a]) - 2);
  String y = Integer.toString(Integer.parseInt(subset1white[a]) + 10);
  String z = Integer.toString(Integer.parseInt(subset1white[a]) - 10);
  String[] arithmetic = {w, x, y, z};
     for(int b=0; b<= arithmetic.length-1; b++){
        if(arithmetic[b] == subset1black[a]){

        }
     }

  }

如果if循环返回true,我需要将subset1black[a]值放入名为result的数组中。我知道如何声明数组,但我不知道如何声明一个可以更改长度的数组(添加新值)。

2 个答案:

答案 0 :(得分:2)

使用可根据需要动态增长的ArrayList<Integer>(由Bhesh Gurung建议):

// Declare
List<Integer> result = new ArrayList<Integer>();

// Add to end of the list
result.add(subset1black[a]);

有关详细信息,请参阅Javadoc,或者是否要以不同方式将元素添加到列表中。

如果您确实需要原始数组,则可以转换List。请参阅此related Q

答案 1 :(得分:0)

Java中没有可变大小的原始数组,因此最接近这种数据结构的是ArrayList类,它在内部是一个对象数组,必要时调整大小。将ArrayList初始化为预期大小(或更多)有助于避免调整大小,但不需要进行此优化。

对于相关代码,上述实现可以是:

List<Integer> result = new ArrayList<Integer>(subset1white.length);

for (int a=0; a<subset1white.length; a++) {

  String w = Integer.toString(Integer.parseInt(subset1white[a]) + 2);
  String x = Integer.toString(Integer.parseInt(subset1white[a]) - 2);
  String y = Integer.toString(Integer.parseInt(subset1white[a]) + 10);
  String z = Integer.toString(Integer.parseInt(subset1white[a]) - 10);

  String[] arithmetic = {w, x, y, z};

  for (int b=0; b<= arithmetic.length-1; b++) {
    if (arithmetic[b] == subset1black[a]) {
      result.add(new Integer(subset1black[a]));
    }
  }    
}

没有必要初始化Integer对象以添加到ArrayList,因为Java会自动执行此操作(通过“自动装箱”),但这样做会使代码变得有点清洁剂。