奇怪的行为是修改列表

时间:2014-08-24 14:54:24

标签: java

我最近写了一个方法来加入一些我在一些文本文件中的值然后修改我想要的值。在我写的方法中,我在下面的代码中得到了“索引数组”:

  String[] s = new String[] {"Value1", "Value2",...}
  List<List<String[]>> Temp = new ArrayList();
  for (List<String[]> i : JL) {
        List<String[]> _Temp = new ArrayList();
        for (String[] x: i) {
            for (String y : s) {
                if (x[0].equals(y))
                    _Temp.add(x);
            }
        }
        _Temp.get(10)[0] = "Some Value"; // Index out of the array error (_Temp lenght is 12)
        // _Temp.get(10) has 2 indexes     
       Temp.add(_Temp);         
    }

这是在我删除_Temp.get(10)[0] = "Some Value";并执行以下代码时,它有效:

    for (List<String[]> x : Temp) {
        x.get(10)[0] = "Some Value";
    }

这是怎么发生的?两种修改值的方法完全相同。

演示:

enter image description here

enter image description here

1 个答案:

答案 0 :(得分:2)

嗯..

  • 两段代码段均未确保_Temp ArrayList
  • 中有10个项目
  • 替换代码段适用于Temp,而失败的代码段适用于_Temp