我正在尝试将数组列表添加到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);
}
答案 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);
}
祝你好运..快乐编程.. :)