将数组列表添加到java中的for循环列表中

时间:2015-09-02 16:17:38

标签: java arrays list for-loop arraylist

我正在尝试将数组列表添加到for循环中的列表中。在我的代码中, 场景 是数组列表,并且假设每个 i 中都有一个新值。对于每个 我想在 list_of_scenarios 场景 > 但我有这个错误。

 Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 1, Size: 0 

关于如何解决它的任何想法?

    int[] ActionArrayTest = new int[25];
    int[] test27Augest = new int[75];
    ArrayList<Hour> scenario = new ArrayList<Hour>();
    List<ArrayList<Hour>> list_of_scenarios = new  ArrayList<ArrayList<Hour>>();

            for (int i = 1; i <= 100; i++) {

        ActionArrayTest = FunctionA (); 

        test27Augest = Fill_the_prefrences(ActionArrayTest);
        scenario = FunctionB(test27Augest);


    list_of_scenarios.add(i, scenario);


    }

2 个答案:

答案 0 :(得分:0)

在循环的第一次迭代中,list_of_scenarios.add(i, scenario);要求将scenario添加到ArrayList中的索引1。但是,此时,您的ArrayList为空。

建议修复:

for (int i = 0; i < 100; i++) {

    ActionArrayTest = FunctionA (); 

    test27Augest = Fill_the_prefrences(ActionArrayTest);
    scenario = FunctionB(test27Augest);


    list_of_scenarios.add(i, scenario);

}

注意:documentation表示此方法在该索引处添加元素,但将其他所有内容都移到右侧。

如果要构建ArrayList以使索引为0的元素在索引1处的元素之前添加,请使用普通add()方法:

list_of_scenarios.add(scenario);

This method只是将元素添加到列表的“结尾”。

答案 1 :(得分:0)

你是否想要创建一个arraylists的arraylist ..听起来像一个很好的编程方法。如果要在列表列表中找到元素,则需要花费大量时间。考虑代码复杂性,找到最后一个arraylist中的最后一个元素。你必须遍历列表列表,获取每个列表,再次遍历每个列表以找到该元素。

如果所有这些arraylists都具有相同的类型,为什么不能将所有这些元素添加到顶部数组列表中。所以你只维护一个arraylist,当你经历for循环时,你将Scenario的元素添加到arraylist。

像这样......

List<Hour> list_of_scenarios = new  ArrayList<Hour>();
 for (int i = 1; i <= 100; i++) {
    ActionArrayTest = FunctionA (); 
    test27Augest = Fill_the_prefrences(ActionArrayTest);
    scenario = FunctionB(test27Augest);
    //add all the elements of 'scenario' to the list.
    list_of_scenarios.addAll(scenario); 
}

祝你好运..快乐编程.. :)