簡體   English   中英

檢查ArrayList元素是否存在

[英]Checking if ArrayList element exists or not

我會盡力解釋這一點。 我有一個String的ArrayList。 我正在嘗試為webapp實現服務器端分頁。 我限於從此ArrayList讀取的每頁項目數(在這種情況下為6)。 可以說,ArrayList是整個目錄,每個頁面都將占據一部分以填充頁面。 當有足夠的元素來填充特定頁面時,當我們擊中ArrayList的末尾(該頁面段剩余少於6個項目)時,我可以使其工作正常。 如何檢查ArrayList是否在其最后一個元素上,或者下一個元素不存在? 我有以下代碼(使用偽ish代碼):

int enterArrayListAtElement = (numberOfItemsPerPage * (requestedPageNumber - 1));
for (int i = 0; i < numberOfItemsPerPage; i++) {
    if (!completeCatalog.get(enterArrayListAtElement + i).isEmpty() {
        completeCatalog.get(enterArrayListAtElement + i);
    }
}

代碼中的if是問題。 任何建議將不勝感激。

謝謝。

聽起來像您想要的:

if (enterArrayListAtElement + i < completeCatalog.size())

這將阻止您嘗試獲取列表末尾以外的值。

如果是這種情況,您可能需要將for循環的范圍更改為以下內容:

int actualCount = Math.min(numberOfItemsPerPage,
                           completeCatalog.size() - enterArrayListAtElement);
for (int i = 0; i < actualCount; i++) {
    // Stuff
}

(如果使用較短的名稱,例如使用firstIndex而不是enterArrayListAtElementpageSize而不是numberOfItemsPerPage ,則可能會更易於格式化。)

你不能只是得到

completeCatalog.size()

並與我比較? 即回答問題“是否有第i個元素”,您說

 if (i<completeCatalog.size())

您只需要添加第二個表達式來查看是否已經到達列表的末尾:

int enterArrayListAtElement = (numberOfItemsPerPage * (requestedPageNumber - 1));
for (int i = 0; i < numberOfItemsPerPage; i++) {
    if (enterArrayListAtElement + i < completeCatalog.size() && !completeCatalog.get(enterArrayListAtElement + i).isEmpty() {
        completeCatalog.get(enterArrayListAtElement + i);
    }
}

ArrayList具有size()方法,該方法返回List中的元素數。

因此,您可以在if語句中使用它來檢查您是否過分。
例如,

if(enterArrayListAtElement + i < completeCatalog.size()) {
   ...
}

暫無
暫無

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

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