我会尽力解释这一点。我有一个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
而不是enterArrayListAtElement
和pageSize
而不是numberOfItemsPerPage
,则可能会更易于格式化。)