簡體   English   中英

如何檢查 ArrayList 中是否存在 index + 1 以避免 IndexOutOfBoundsException

[英]How to check if index + 1 is present in ArrayList to avoid 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);

誰能告訴我如何檢查 index + 1 是否存在? 我也對一般代碼改進持開放態度。

更改此行

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

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

這樣,一旦沒有下一個元素可用,您將結束循環。

你可以檢查if(list.size() > index + 1)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM