java - 如何检查 ArrayList 中是否存在索引 + 1 以避免 IndexOutOfBoundsException

标签 java list loops indexoutofboundsexception

一个列表包含多个列表。从这些列表中,总是一个接一个地检查 2 个列表,并从彼此中减去值。然后将结果保存在新列表中。

代码如下所示:

    List<List<AccountlinevaluesEntity>> a_l_v_eList = new ArrayList<>();
    List<List<AccountlinevaluesEntity>> finalList = new ArrayList<>();

    //creates multiple ArrayLists in List, based on numbers of monthList
    for (int i = 0; i < monthList.size(); i++) {
        a_l_v_eList.add(new ArrayList<>());
        finalList.add(new ArrayList<>());
    }
    //splits original List and seperates lists
    for (AccountlinevaluesEntity a_l_v_E : alveList) {
        for (int k = 0; k < a_l_v_eList.size(); k++) {
            for (int j = 0; j < monthList.size(); j++) {
                if (j == k) {
                    if (a_l_v_E.getPeriod().equals(String.valueOf(monthList.get(j)))) {
                        a_l_v_eList.get(j).add(a_l_v_E);
                    }
                }
            }
        }
    }

    List<AccountlinevaluesEntity> tempList;

    for (int i = 0; i < a_l_v_eList.size(); i++) {
        List<AccountlinevaluesEntity> firstMonth = a_l_v_eList.get(i);

        tempList = a_l_v_eList.get(i + 1);

        for (int j = 0; j < firstMonth.size(); j++) {
            AccountlinevaluesEntity firstMonthElement = firstMonth.get(j);

            for (AccountlinevaluesEntity nextMonthElementTemp : tempList) {
                if (firstMonthElement.getAccountNumber() == nextMonthElementTemp.getAccountNumber()) {
                    nextMonthElementTemp.setAmount(subtractAmount(firstMonthElement.getAmount(), nextMonthElementTemp.getAmount()));
                    finalList.get(i).add(nextMonthElementTemp);
                    break;
                }
            }
        }
    }

就其本身而言,代码首先做出他应该做的事情。

但从逻辑上讲,它最终会在这一行出现:

tempList = a_l_v_eList.get(i + 1);

谁能告诉我如何检查索引 + 1 是否存在? 我也愿意进行一般代码改进。

最佳答案

改变这一行

for (int i = 0; i < a_l_v_eList.size(); i++) {

for (int i = 0; i < a_l_v_eList.size()-1; i++) {

这样,一旦没有下一个元素可用,您将结束循环。

关于java - 如何检查 ArrayList 中是否存在索引 + 1 以避免 IndexOutOfBoundsException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58992685/

相关文章:

html - 在 HTML 中缩进列表

java - Android 应用程序运行时出错

java - 如何获取jtable列中的总和

c# - 如何在列表中搜索在其任何属性值中包含子字符串的元素?

python - 循环以最小化python中数组的功能

javascript - div类所应用的span id如何循环?

Java Hangman 无法正确循环

java - 调用子类方法?

java - 是否可以将 log4j 配置为在每次运行应用程序时创建一个新文件?

list - 将 dolist 变量添加到 LISP 中的列表