检查ArrayList元素是否存在

时间:2011-03-02 13:36:56

标签: java arrays arraylist

我会尽力解释这个问题。我有一个String的ArrayList。我正在尝试为webapp实现服务器端分页。我被限制为从这个ArrayList读取的每页项目数(在这种情况下为6)。例如,ArrayList是整个目录,每个页面都会使用它的一部分来填充页面。当有足够的元素来填充特定页面时,我可以正常工作,当我们到达ArrayList的末尾时,该页面段将剩下少于6个项目。如何检查ArrayList是否在其最后一个元素上,或者下一个元素是否存在?我有以下代码(伪代码):

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

代码中的 if 是问题所在。任何建议将不胜感激。

感谢。

4 个答案:

答案 0 :(得分: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,您可能会发现格式更容易格式化。)

答案 1 :(得分:0)

你不能得到

completeCatalog.size()

并将它与我比较?即回答“你有没有第i个元素”的问题

 if (i<completeCatalog.size())

答案 2 :(得分: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);
    }
}

答案 3 :(得分:0)

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

因此,您可以在if语句中使用它来检查您是否走得太远 例如,

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