我查看了有关此例外的所有问题。我知道数组索引从0开始,如果大小为1,我们只能访问索引0.虽然我知道这个逻辑,但我无法修复以下代码。
private static Map<String, Map<String, List<String>>> executions = new HashMap<String, Map<String, List<String>>>();
public static String readExecution(String jobName, String deviceName, int executionNumber) {
String result = null;
Map<String, List<String>> jobExecutions = executions.get(jobName);
if (jobExecutions != null) {
List<String> executionPerDevice = jobExecutions.get(deviceName);
result = executionPerDevice.get(executionNumber); // ERROR
}
return result;
}
编辑: Fildor的comment.execution数字的答案是1。
答案 0 :(得分:1)
快速解决方案: 执行号作为参数从外部传递,因此您应该检查此数字是否适合executionPerDevice大小:
if (executionPerDevice.size() >= executionNumber){
result = executionPerDevice.get(executionNumber);
}
答案 1 :(得分:0)
这些运行时异常消息会告诉您为了解问题需要知道的所有。
SIZE是ONE
INDEX是ONE。
考虑一个大小为1的列表的有效索引集。