繁体   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