2011-03-02 280 views
0

我會盡我所能解釋這一點。我有一個String的ArrayList。我正在嘗試爲webapp實現服務器端分頁。我受限於從此ArrayList中讀取的每頁項目數(本例中爲6)。可以說,ArrayList是整個目錄,每個頁面都會佔用一部分來填充頁面。當有足夠的元素來填充特定頁面時,我們可以很好地工作,當我們點擊ArrayList的結尾時,該頁面段將剩餘6個項目。我如何檢查ArrayList是否在最後一個元素上,或者下一個元素是否存在?我有以下代碼(在僞ISH代碼):檢查ArrayList元素是否存在

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

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

謝謝。

回答

4

這聽起來像你想:

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

+0

大,這完美的作品。謝謝。感謝所有其他人的建議。 – MeanwhileInHell 2011-03-02 14:01:10

0

你就不能得到

completeCatalog.size() 

並與我比較?即回答「是有一個第i個元素」你說

if (i<completeCatalog.size()) 
0

你只需要添加第二個表情看列表的末尾是否已經達到:

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); 
    } 
} 
0

一個ArrayList有size()方法,它返回List中元素的數量。

因此,你可以在if語句中使用它來檢查你沒有做太多的事情。
例如,

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